Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [gelöst] TMemo und "echte" Zeilen (https://www.delphipraxis.net/141874-%5Bgeloest%5D-tmemo-und-echte-zeilen.html)

Schwedenbitter 18. Okt 2009 00:26


[gelöst] TMemo und "echte" Zeilen
 
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.

Lannes 18. Okt 2009 00:57

Re: TMemo und "echte" Zeilen
 
Hallo,

schreib die Lines(der automatisch Umbruch erzeugt neue) in eine StringList und speicher dann aus der StringList.

Delphi-Quellcode:
with TStringList.Create Do
   try
   AddStrings(Memo.Lines);
   SaveToFile(ExtractFilePath(ParamStr(0)) + 'Test.txt');
   finally
      Free;
   end;
Es gibt auch eine Möglichkeit mit Sendmessage die automatischen Umbrüche zu fixieren, finde den Code aber nicht wieder :?

Schwedenbitter 18. Okt 2009 09:03

Re: TMemo und "echte" Zeilen
 
Zitat:

Zitat von Lannes
Hallo,

schreib die Lines(der automatisch Umbruch erzeugt neue) in eine StringList und speicher dann aus der StringList.

Tausend Dank! Ich hätte nicht gedacht, dass es so einfach ist. :cheers:

Zitat:

Zitat von Lannes
Es gibt auch eine Möglichkeit mit Sendmessage die automatischen Umbrüche zu fixieren, finde den Code aber nicht wieder :?

Das brauche ich nicht (mehr), denn es funktioniert ja schon. Trotzdem Danke.

Gruß, Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz