Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 

Re: Inhalt von TRichEdit ohne Verlust von DefAttributes kopi

  Alt 16. Sep 2005, 11:39
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
Angehängte Dateien
Dateityp: zip rich_600.zip (8,2 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat