Thema: Delphi RichEdit Speichern/Laden

Einzelnen Beitrag anzeigen

gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#7

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 14:13
ich hab kein word, aber open office zeigt meien formatierung auch nichtm it an


hier ist mein code :

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Printers;

type
  TForm1 = class(TForm)
    Datum: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Seitenzahlen: TEdit;
    Speichern: TButton;
    Titel: TEdit;
    RichEdit1: TRichEdit;
    nach_links_einruecken: TButton;
    nach_rechts_ausruecken: TButton;
    Edit3: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    Button3: TButton;
    Nummerieren_an: TButton;
    Laden: TButton;
    procedure TextClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    function Prüfen(Hilfsvar : integer; Text : String; var Örtchen : String) :boolean;
    procedure nach_links_einrueckenClick(Sender: TObject);
    procedure SpeichernClick(Sender: TObject);
    procedure nach_rechts_ausrueckenClick(Sender: TObject);
    procedure RichEdit1Change(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TitelClick(Sender: TObject);
    procedure Neu;
    procedure Button3Click(Sender: TObject);
    procedure Nummerieren_anClick(Sender: TObject);
    procedure LadenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Pfad : String;
  Ort_In : String;
  gespeichert : boolean ;
const ext = '.rtf';


implementation


{$R *.dfm}

procedure TForm1.nach_links_einrueckenClick(Sender: TObject);
begin
nach_links_einruecken.Tag := nach_links_einruecken.Tag + 5;
  Edit3.Text := IntToStr(nach_links_einruecken.Tag);
end;

procedure TForm1.nach_rechts_ausrueckenClick(Sender: TObject);
begin
nach_links_einruecken.Tag := nach_links_einruecken.Tag - 5;
Edit3.Text := IntToStr(nach_links_einruecken.Tag);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  printDialog : TPrintDialog;
  myPrinter : TPrinter;
  i, y : integer ;

begin
  // Create a printer selection dialog
  printDialog := TPrintDialog.Create(Form1);

  // If the user has selected a printer (or default), then print!
  if printDialog.Execute then
  begin
    // Use the Printer function to get access to the
    // global TPrinter object.
    // All references below are to the TPrinter object
    myPrinter := Printer;
    with myPrinter do
    begin
      // Start printing
      BeginDoc;

      // Set up the RichEdit font
      Canvas.Font := RichEdit1.Font;

      // Write out the page size
      Canvas.TextOut(40, 20, Titel.Text);
      y := 150;
      For i := 1 to RichEdit1.Lines.Count do
      begin
        Canvas.TextOut(40, y, RichEdit1.Lines[i]);
        y := y +130;
      end;

      // Finish printing
      EndDoc;
    end;
  end;
end;

procedure TForm1.Nummerieren_anClick(Sender: TObject);
begin
  RichEdit1.Paragraph.Numbering := TNumberingStyle(nsBullet);
end;

procedure TForm1.LadenClick(Sender: TObject);
var
Ort : String ;
begin
  Ort := Pfad + Seitenzahlen.Text + ext;
  try
    RichEdit1.Lines.LoadFromFile(Ort);
  Except
    ShowMessage('Fehler');
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
buttonSelected : Integer;
begin
if gespeichert = False then begin
  buttonSelected := MessageDlg('Willst du vorm beenden speichern ?',mtInformation ,mbYesNo,0);
  if (buttonSelected = mrYes) then
  begin
    if not (RichEdit1.Text[1] = '/') then
    begin
      RichEdit1.Text := (Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/'+ #13#10) + RichEdit1.Text;
      Speichern.Click;
    end;
  end;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
Liste : Tstringlist;
Prüfstring,TempZählsTring : String ;
Zeile,i,Zähler : Integer;
begin
Pfad := Application.ExeName;
Pfad := Copy(Pfad,0,Length(Pfad)-4)+'/';
Ort_In := Pfad + 'Inhaltsverzeichnis' + ext;
Datum.Text := DateToStr(Date);
Liste := Tstringlist.Create;
RichEdit1.Text := '';
RichEdit1.Paragraph.Numbering := TNumberingStyle(nsBullet);
If (Prüfen(1,'1/Inhaltsverzeichnis/'+Datum.Text+'/',Ort_In) = True) Then
  begin
    Liste.LoadFromFile(Ort_In);
    Zeile := (Liste.Count - 1);
    Prüfstring := Liste[Zeile] ;
    TempZählString := '';
    i := Pos('/',Prüfstring);
    TempZählString := Copy(Prüfstring,1,i-1);
    Zähler := StrToInt(TempZählString);
    Inc(Zähler);
    Seitenzahlen.Text := IntToSTr(Zähler);
    end
  else
  Seitenzahlen.Text := '1';
end;

procedure TForm1.TextClick(Sender: TObject);
begin
RichEdit1.Text := '';
end;

procedure TForm1.TitelClick(Sender: TObject);
begin
Titel.Text := '';
end;

function TForm1.Prüfen(Hilfsvar : integer; Text : String; var Örtchen : String) :boolean;
var
Dokument : Tstringlist;
begin
  Dokument:= Tstringlist.Create;
  if not (FileExists(Örtchen)) then
    begin
      ForceDirectories(Pfad);
      If (Hilfsvar = 1) Then begin
        Dokument.Add(Text);
        Dokument.SaveToFile(Örtchen);
      end;
      Result := False;
    end
  Else
  Result := True;
end;

procedure TForm1.Neu ;
var
Liste : Tstringlist;
Prüfstring,TempZählsTring : String ;
Zeile,i,Zähler : Integer;
begin
  Liste := TStringlist.Create;
  Liste.Clear;
  RichEdit1.Text := '-';
  Titel.Text := 'Stichpunkte ' + Datum.Text ;
  If (Prüfen(1,'1/Inhaltsverzeichnis/'+Datum.Text+'/',Ort_In) = True) Then
  begin
    Liste.LoadFromFile(Ort_In);
    Zeile := (Liste.Count - 1);
    Prüfstring := Liste[Zeile] ;
    TempZählString := '';
    i := Pos('/',Prüfstring);
    TempZählString := Copy(Prüfstring,1,i-1);
    Zähler := StrToInt(TempZählString);
    Inc(Zähler);
    Seitenzahlen.Text := IntToSTr(Zähler);
    end
  else
  Seitenzahlen.Text := '1';
  RichEdit1.Tag := 0;
  Edit3.Text := IntToStr(RichEdit1.Tag);
  Edit4.Text := IntToStr(RichEdit1.Lines.Count);
end;
procedure TForm1.SpeichernClick(Sender: TObject);
var
ort : String ;
Liste : Tstringlist;
begin
  Liste := Tstringlist.Create;
  Liste.LoadFromFile(Ort_In);
  Liste.Add(Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/');
  Liste.SaveToFile(Ort_In);
  Liste.Clear;
  if not (RichEdit1.Text[1] = '/') then
  begin
    RichEdit1.Text := (Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/'+ #13#10) + RichEdit1.Text;
    Ort := Pfad + Seitenzahlen.Text + ext;
    RichEdit1.Lines.SaveToFile(Ort);
  end;
gespeichert := True ;
end;

procedure TForm1.RichEdit1Change(Sender: TObject);
var
buttonSelected : integer;
Liste : Tstringlist;
Datei : String;
Seitenzahl : Integer ;
begin
  RichEdit1.Paragraph.FirstIndent := nach_links_einruecken.Tag*4;
  If (RichEdit1.Lines.Count = 41) Then
    begin
      buttonSelected := MessageDlg('Du hast Mehr geschrieben als auf eine Seite passt' +#13#10 + 'Willst du nun speichern und eine neue Datei anlegen ?',mtInformation ,mbYesNo,0);
      if (buttonSelected = mrYes) then
      begin
        Liste := Tstringlist.Create;
        Liste.LoadFromFile(Ort_In);
        Liste.Add(Seitenzahlen.Text+'/'+Titel.Text+'/'+ Datum.Text+'/');
        Liste.SaveToFile(Ort_In);
        Liste.Clear;
        Liste.Text := Titel.Text + '/';
        Liste.Add(RichEdit1.Text);
        if not (RichEdit1.Text[1] = '/') then
        begin
            Datei := Pfad + Seitenzahlen.Text + ext;
            Liste.SaveToFile(Datei);
        end;
        Titel.Text := Titel.Text + ' II';
        SeitenZahl := StrToInt(Seitenzahlen.Text);
        Inc(Seitenzahl);
        Seitenzahlen.Text := IntToStr(SeitenZahl);
        RichEdit1.Text := '';
    end;
  end;
  Edit4.Text := IntToStr(RichEdit1.Lines.Count);
end;

end.
wpbei die druckfunktion noch nicht funktioniert ...
  Mit Zitat antworten Zitat