Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: zwei RichEdits zusammenführen

  Alt 9. Aug 2005, 18:30
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;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat