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
(wahrscheinlich hab' ich's übersehen)