Hallo Heike,
es gibt keinen so richtig einfachen Weg zum Kopieren von formatierten Texten zwischen zwei RichEdit controls. Ich verwende folgende Prozedur:
Delphi-Quellcode:
uses
TOM,
RichEdit,
RichOle;
procedure RichCopy(reSource, reTarget: TRichEdit);
var
u: IUnknown;
reoSource, reoTarget: IRichEditOle;
tdSource, tdTarget: ITextDocument;
trSource, trTarget: ITextRange;
begin
SendMessage(reSource.Handle, EM_GETOLEINTERFACE, 0, Integer(@u));
u.QueryInterface(IID_IRICHEDITOLE, reoSource);
tdSource := reoSource as ITextDocument;
SendMessage(reTarget.Handle, EM_GETOLEINTERFACE, 0, Integer(@u));
u.QueryInterface(IID_IRICHEDITOLE, reoTarget);
tdTarget := reoTarget as ITextDocument;
tdTarget.Selection.FormattedText := tdSource.Selection.FormattedText;
end;
Das angehängte Archiv enthält eine bei SourceForge gehostete Delphi Portierung von RichOle.h und TOM habe ich mit TLIBIMP aus RICHED20.DLL erstellt. TOM habe ich als (unsichtbare) Komponente in Delphi installiert.
Nutzen kannst du es dann so:
Delphi-Quellcode:
begin
RichEdit1.SelectAll;
RichEdit2.SelectAll;
RichCopy(RichEdit1, RichEdit2);
end;
Alternativ kann man den etwas traditionelleren Weg über das stream interface der rich edit controls gehen.
nicoDE hat dazu etwas bei den Schweizern abgeladen.
Grüße vom marabu