AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] TMemo und "echte" Zeilen

Ein Thema von Schwedenbitter · begonnen am 18. Okt 2009 · letzter Beitrag vom 18. Okt 2009
Antwort Antwort
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, 01: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
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

Re: TMemo und "echte" Zeilen

  Alt 18. Okt 2009, 01:57
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
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Schwedenbitter

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

Re: TMemo und "echte" Zeilen

  Alt 18. Okt 2009, 10:03
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.

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
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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