![]() |
zwei RichEdits zusammenführen
Hallöchen :P,
Ich versuche gerade zwei RichEdits zusammenzuführen... besser gesagt den Inhalt, sammt Formatierung in das andere RichEdit mit zuübernehmen. Dabei musste ich leider feststellen, das der Inhalt, aber nicht die Formatierung, mit übernommen wird. :gruebel:
Delphi-Quellcode:
Mein suchen in der Delphi-Hilfe hat mich diesmal nicht viel schlauer gemacht :roll:
procedure Merge(var dest,source : TRichEdit);
begin with dest do begin Lines.Add(source.Text); end; end; euer Andreas |
Re: zwei RichEdits zusammenführen
Delphi-Quellcode:
/Edit: Sorry: geht tatsächlich verloren /Edit
R1.lines.Text := R1.lines.Text + R2.lines.Text;
Grüße // Martin |
Re: zwei RichEdits zusammenführen
auch da wird wohl die Formatierung verloren gehen. Ich würde es mit der Stream Eigenschaft versuchen.
|
Re: zwei RichEdits zusammenführen
ähh wie über die Streameigenschaften ????
|
Re: zwei RichEdits zusammenführen
Etwa so:
Delphi-Quellcode:
[Nachtrag]
strm := TMemoryStream.Create;
try RichEdit1.Lines.SaveToStream(strm); strm.Position := 0; RichEdit2.Lines.LoadFromStream(strm); finally strm.Free; end; 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 ![]()
Delphi-Quellcode:
und dann:
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;
Delphi-Quellcode:
strm := TMemoryStream.Create;
try RichEdit1.Lines.SaveToStream(strm); strm.Position := 0; AddRtfFromStream(RichEdit2.Handle, strm); finally strm.Free; end; |
Re: zwei RichEdits zusammenführen
is ja super... Aber was ist TEditStream ??? :gruebel:
|
Re: zwei RichEdits zusammenführen
Ich weis nicht genau, aber geht das, wenn man die Eigenschaft PlainText auf TRUE setzt?
und dann:
Delphi-Quellcode:
Is nur ne Idee -> hab's nicht getestet
R1.lines.Text := R1.lines.Text + R2.lines.Text;
|
Re: zwei RichEdits zusammenführen
Zitat:
Da stehen nicht die Definitionen von TRichEdit drin (das ist in "ComCtrls.pas" deklariert), sondern die API-Sachen für's RichEdit-Control (Strukturen usw.) |
DANKE jetzt gehts
in einem anderen Beitrag stand es:
Delphi-Quellcode:
JETZT funktioniert es !!! DANKE EUCH, das is krazz... :dp:
// These declarations are wrong in richedit.pas, the stdcall is missing.
TEditStreamCallBack = function (dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall; TEditStream = record dwCookie: Longint; dwError: Longint; pfnCallback: TEditStreamCallBack; end; also das mit dem Plain Text ? Ähm, hab ich noch gar net bedacht... aber ich glaube, dann muss man neu laden... ich glaub ich wollt mal den RichEdit Source life anzeigen und so per Tags bearbeiten, so wie im HTML aber mit dem Plain, das ging net so recht, wenn ich mich recht erinnere... (aber ich beSchwörs net - ist lang her) :stupid: bin jetzt froh :bouncing4: das der krempel geht und das mein Programm endlich die Briefchen erzeugen kann... so wie es das vorher auch konnte, nur eben ohne Formatierung... jippii yaaeehh... so n fetter Buchstabe drin, das macht schon spaß :coder: euer Andreas sagt [b] DANKE [b] :spin2: PS: vielleicht könnt wir die Lösung mal in die [b]CodeLibrary[&b] einfügen... Wer darf das eigendlich ? PPS: wenn das hier alls richtig funzt, wie ich hoffe, dann muss ich unbedingt, das veröffentlichen... word, openoffice und rtf alles in einem griff ;-) nur sind meine funktionen im Moment noch undurchsichtig und undokumentiert und nicht fehlerfrei... vielleicht darf ich das dann in die CodeLibrary stellen (doch ist ja nicht von mir ist ja nur zusammengestellt und verändert, ge- und verbastelt... naja, mal schauen - so Gott will und ich lebe und es alles funktioniert... ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz