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 TRichEdit und Delphi2009 (https://www.delphipraxis.net/127802-trichedit-und-delphi2009.html)

hanspeter 19. Jan 2009 11:48


TRichEdit und Delphi2009
 
Hallo,

unter D2009 habe ich folgendes Problem mit dem TRichedit.

Ich gebe Text ein und formatiere diesen.
Nach der Änderung schreibe ich diesen in die Datenbank zurück.

Delphi-Quellcode:
Edt.PlainText := false;
FieldbyName('Text').asstring := EditLines.Text;

Einlesen:
Edit.SelectAll;
Edit.SelText := FieldbyName('Text').asstring
,
Alternativ habe ich auch einen Versuch über TStringStream gestartet.
Enthält der Text mehr als eine Zeile, so funktioniert das 3 bis 4 mal.

Dann steht plötzlich der RTF Rohtext im Editfeld.
Also der Text mit allen Steuerzeichen.
Als Datenbank wird Firebird 2.0 verwendet. Das Feld ist ein VARCHAR(2048).

Probeweise habe ich mal ein Blobfield (Subtype 1 = Text) verwendet.
Da funktioniert es wohl. Ich kann allerdings die Struktur der Datenbank nicht ändern.
Hat wer eine Idee wie man das Problem in den Griff bekommen könnte?

Gruß
Peter

squetk 22. Jan 2009 18:08

Re: TRichEdit und Delphi2009
 
Ich kenne das Problem und hatte Erfolg mit diesem WorkAround zum Laden in das Control:
Delphi-Quellcode:
    s := TStringStream.Create(FieldByName('RTFTextfeld').AsString);
    try
      RichEdit1.Lines.LoadFromStream(s);
    finally
      FreeAndNil(s);
    end;
Möglicherweise reicht das schon. Wenn nicht - das Holen vom Control geht dann so:
Delphi-Quellcode:
function GetRTFText : WideString;
var RichStream: TStringStream;
    S: String;
begin
  RichStream := TStringStream.Create(S);
  try
    RichEdit1.Lines.SaveToStream(RichStream);
    Result := RichStream.DataString;
  finally
    RichStream.Free;
  end;
end;

hanspeter 22. Jan 2009 18:20

Re: TRichEdit und Delphi2009
 
Die erste Variante funktioniert nicht. Es geht zwar eine Weile aber irgendwann dann wieder der Konvertierungsfehler.
Die zweite Variante funktioniert. Diese verwende ich jetzt. Musste allerdings den Datentyp in der Datenbank in Blobfield ändern.


Gruß
Peter

squetk 22. Jan 2009 18:38

Re: TRichEdit und Delphi2009
 
Eigentlich sind es nicht zwei Varianten sondern jeweils zum Laden in das RTF-Control und zum Holen vom RTF-Control.
Aber ich habe ein varchar-Feld im IB/FB dafür nach wie vor in Verwendung. Das klappt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 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