Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

[gelöst] TMemo und "echte" Zeilen

  Alt 18. Okt 2009, 00:26
Hallo,

ich habe eine selbstgebastelte "MessageBox" mit einem TMemo. Ferner wird der Button OK mit Enter und der Button Abbrechen mit ESC ausgelöst. TMemo.WordWrap ist deshalb True und TMemo.WantReturn ist False. Der Text wird - so wie von mir gewünscht - am rechten Ende des TMemo in eine neue Zeile umgebrochen. Das Drücken von Enter wäre daher ohnehin Quatsch. Nach dem Klick auf OK (bzw. Enter)wird der Inhalt mit TMemo.Lines.SaveToFile('...') gespeichert. Leider werden dabei die automatischen Umbrüche nicht mit gespeichert.
Ich möchte jetzt aber, dass der Text exakt so, wie im TMemo auch in der Datei steht; und zwar mit den automatisch vorgenommenen Umbrüchen. Der Sinn ist, den Inhalt der Text-Datei später für die Ausgaben in einer Application.MessageBox zu benutzen. Dort wird zwar auch umgebrochen. Aber erst viel später, so dass man sehr unschöne Fenster hat.

Kann mir da jemand helfen?

Meine Idee war zunächst, im Ereignis OnKeyPress TMemo.CaretPos abzufragen und bei einer neuen Zeile vor dem Wort ein #10#13 einzufügen. Das ist aber aufwending. Und wenn später ein Wort gelöscht wird, gibt es Probleme.

Gruß, Alex

Delphi-Quellcode:
unit Unit1;

interface

uses
   SysUtils, Forms, StdCtrls, Classes, Controls;

type
   TForm1 = class(TForm)
     Memo1: TMemo;
     Button1: TButton;   Button2: TButton;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Test.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   with TStringList.Create Do
   try
      LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Test.txt');
      Application.MessageBox(PAnsiChar(Text), 'Test');
   finally
      Free;
   end;
end;

end.
Alex Winzer
  Mit Zitat antworten Zitat