Etwa so:
Delphi-Quellcode:
strm := TMemoryStream.Create;
try
RichEdit1.Lines.SaveToStream(strm);
strm.Position := 0;
RichEdit2.Lines.LoadFromStream(strm);
finally
strm.Free;
end;
[Nachtrag]
Allerdings kannst du so nur vollständig ersetzen und nichts anfügen. Alternativ musst du mit EM_STREAMIN arbeiten, dazu siehst du dir am besten in ComCtrls.pas die Routine
TRichEditStrings.LoadFromStream an.
[Noch'n Nachtrag]
Wie das geht steht in
diesen Thread, hier noch einmal die Essenz:
Delphi-Quellcode:
uses
RichEdit;
// Hilfsroutine für AddRtfFromStream
function _AddRtfCallback(dwCookie: Longint; pbBuff: PByte;
cb: Longint;
var pcb: Longint): Longint;
stdcall;
begin
try
Result := 0;
pcb := TStream(dwCookie).
Read(pbBuff^, cb);
except
Result := 1;
end;
end;
// Ersetzt die aktuelle Auswahl durch den Inhalt des Streams
procedure AddRtfFromStream(RichEditHandle: THandle; Stream: TStream);
var EditStream: TEditStream;
begin
EditStream.dwCookie := LongInt(Stream);
EditStream.dwError := 0;
EditStream.pfnCallback := @_AddRtfCallback;
SendMessage(RichEditHandle, EM_STREAMIN, SF_RTF + SFF_SELECTION, LongInt(@EditStream));
if EditStream.dwError <> 0
then
raise Exception.Create('
RichEdit operation fehlgeschlagen!');
end;
und dann:
Delphi-Quellcode:
strm := TMemoryStream.Create;
try
RichEdit1.Lines.SaveToStream(strm);
strm.Position := 0;
AddRtfFromStream(RichEdit2.Handle, strm);
finally
strm.Free;
end;