Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DBRichEdit in RichEdit (https://www.delphipraxis.net/4946-dbrichedit-richedit.html)

Stephan 17. Mai 2003 20:25


DBRichEdit in RichEdit
 
Hi,

wie kann ich den Text von einem DBRichEdit in ein RichEdit samt Formatierungen übernehmen?

Ich habs versucht mit:

var
Stream: TMemoryStream;
begin
Stream:=TMemoryStream.Create;
try
RichEdit1.Lines.SaveToStream(Stream);
Stream.Seek(soFromBeginning,0);
RichEdit2.Lines.LoadFromStream(Stream);
finally
Stream.Free;
end;

hat leider nicht geklappt

viele Grüße

Stephan

Christian Seehase 17. Mai 2003 23:38

Moin Stephan,

vom Prinzip her klappt das so (getestet):

Delphi-Quellcode:
var
  cfWork : TCHARFORMAT;
  pResult : PChar;

begin
  DBRichEdit1.Lines.Add('TEXT');
  DBRichEdit1.SelectAll;
  cfWork.cbSize := SizeOf(cfWork);
  SendMessage(DBRichEdit1.Handle,EM_GETCHARFORMAT,SCF_SELECTION,lParam(@cfWork));
  pResult := AllocMem(DBRichEdit1.SelLength);
  try
    SendMessage(DBRichEdit1.Handle,EM_GETSELTEXT,0,lParam(pResult));
    RichEdit1.Lines.Clear;
    SendMessage(RichEdit1.Handle,WM_SETTEXT,0,lParam(pResult));
    RichEdit1.SelectAll;
    SendMessage(RichEdit1.Handle,EM_SETCHARFORMAT,SCF_SELECTION,lParam(@cfWork));
  finally
    FreeMem(pResult,DBRichEdit1.SelLength);
  end;
  DBRichEdit1.SelLength := 0;
  RichEdit1.SelLength  := 0;
end;
Es wird einfach mit Hilfe der zugehörigen Messages das Format des selektierten Textes und anschliessend der Text selber aus dem DBRichEdit ausgelesen, und dann auf das RichEdit übertragen.

Wichtig:
Dieses Beispiel setzt voraus, dass der gesamte Text das gleiche Format hat, ggf. müsste also das Format Zeichenweise übertragen werden.

Warum ein DBRichEdit beim Speichern nicht das Format mitspeichert weiss ich allerdings auch nicht. Gemäss der VCL Sourcen dürfte das eigentlich nicht sein, und ist doch so :shock:
(wahrscheinlich hab' ich's übersehen)

Stephan 18. Mai 2003 08:38

Hi,

hm, leider hab ich verschiedene Formate drin. Alles mögliche. Gibts eine Möglichkeit den Inhalt eines RichEdit mit Formatierun in ein TTable zu schreiben und auszulesen (ohne DBRichEdit)?

viele Grüße

Stephan


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