AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

zwei RichEdits zusammenführen

Ein Thema von spacewolf · begonnen am 9. Aug 2005 · letzter Beitrag vom 11. Aug 2005
Antwort Antwort
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#1

zwei RichEdits zusammenführen

  Alt 9. Aug 2005, 14:47
Hallöchen ,

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.

Delphi-Quellcode:
procedure Merge(var dest,source : TRichEdit);
begin
  with dest do
  begin
    Lines.Add(source.Text);
  end;
end;
Mein suchen in der Delphi-Hilfe hat mich diesmal nicht viel schlauer gemacht

euer Andreas
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#2

Re: zwei RichEdits zusammenführen

  Alt 9. Aug 2005, 15:24
R1.lines.Text := R1.lines.Text + R2.lines.Text; /Edit: Sorry: geht tatsächlich verloren /Edit

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: zwei RichEdits zusammenführen

  Alt 9. Aug 2005, 15:36
auch da wird wohl die Formatierung verloren gehen. Ich würde es mit der Stream Eigenschaft versuchen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#4

Re: zwei RichEdits zusammenführen

  Alt 9. Aug 2005, 17:13
ähh wie über die Streameigenschaften ????
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
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, 17: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
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#6

Re: zwei RichEdits zusammenführen

  Alt 11. Aug 2005, 08:25
is ja super... Aber was ist TEditStream ???
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
SebE

Registriert seit: 31. Jul 2004
Ort: Chemnitz
316 Beiträge
 
Delphi 7 Personal
 
#7

Re: zwei RichEdits zusammenführen

  Alt 11. Aug 2005, 08:29
Ich weis nicht genau, aber geht das, wenn man die Eigenschaft PlainText auf TRUE setzt?

und dann:

R1.lines.Text := R1.lines.Text + R2.lines.Text; Is nur ne Idee -> hab's nicht getestet
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: zwei RichEdits zusammenführen

  Alt 11. Aug 2005, 08:39
Zitat von spacewolf:
is ja super... Aber was ist TEditStream ???
Ist definiert in "RichEdit.pas", die Datei ist bei Delphi dabei!

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.)
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#9

DANKE jetzt gehts

  Alt 11. Aug 2005, 08:46
in einem anderen Beitrag stand es:

Delphi-Quellcode:
  // 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;
JETZT funktioniert es !!! DANKE EUCH, das is krazz...


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)


bin jetzt froh 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ß

euer Andreas sagt [b] DANKE [b]

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...
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz