Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Inhalt eines RichEdits in 2. RichEdit kopieren
Sors - Mo 10.03.08 21:38
Titel: Inhalt eines RichEdits in 2. RichEdit kopieren
Hallo,
ich habe folgendes Problem. Ich habe zwei RichEdits. Ich möchte nun den Inhalt des ersten RichEdits in das zweite RichEdit kopieren, dabei soll aber die Formatierung der einzelen Zeilen erhalten bleiben.
Wenn ich die Funktion RichEdit2.Lines.Assign(RichEdit1.Lines); verwende, dann wird zwar der Inhalt in das zweite Richedit kopiert, aber die Formatierung der einzelnen Zeilen die ich über SetAttributes festgelegt habe, nicht übernommen.
Wie kann ich die Formatierung mitübernehmen?
Yogu - Mo 10.03.08 23:09
Kopiere einfach den gesamten RTF-Text von einem zum anderen RichEdit:
Delphi-Quelltext
1:
| DestRichEdit.Lines.Text := SourceRichEdit.Lines.Text; |
Da werden dann auch die Formatierungen übernommen, weil die im RTF-Source mit gespeichert werden.
Yogu - Di 11.03.08 16:53
Lannes hat folgendes geschrieben: |
Hallo,@ Yogu: schon mal erfolgreich damit gewesen? |
Ja. Ich habe bis jetzt den RTF-Code selber geschrieben, da klappte das alles ganz wunderbar. Ich kannte diese Style-Eigenschaften des RichEdits bis jetzt noch gar nicht, da klappt es wohl nicht so einfach. Ich frage mich aber, wie Delphi die Datei dann richtig speichern kann. Da wir nämlich eine RTF-Datei erzeugt, aber im eigentlichen Inhalt der
Lines ist der Plain-Text drin. Man lernt immer noch was dazu... :D
Lannes - Di 11.03.08 19:13
Hallo,
Yogu hat folgendes geschrieben: |
Ich frage mich aber, wie Delphi die Datei dann richtig speichern kann. |
Das TRichEdit ist ein Wrapper für die im System(Windows) installierte RTF-Komponente die Delphi zum speichern nutzt. Wie das speichern bzw. konvertieren genau funktioniert kann ich Dir nicht sagen, frag doch mal bei Microsoft nach. :)
Sors - Di 11.03.08 21:45
Hallo,
euer Tipp oben hat mir weitergeholfen. Der Anwender kann nun in meinem Programm den gesamten Inhalt des ersten RichEdits ins zweite einfügen, ohne das die Formatierung verloren geht.
In meinem Programm soll der Anwender aber wählen können, ob der ganze Text oder nur eine Auswahl ins zweite RichEdit verschoben werden soll. Im ersten Falle funktioniert nun alles so wie es soll, jedoch für den zweiten Fall nicht, denn ich kann nicht die Eigenschaften einer bestimmten Auswahl im RE ermitteln, sondern nur für den ganzen Inhalt des RE.
Wie schaffe ich es, nur die Auswahl samt Formatierung ins zweite RichEdit zu verschieben? Bei den Tipps oben kann ich immer nur das ganze RichEdit an die procedure die die Formatierung ermittelt übergeben. Gibt es auch eine Möglichkeit die RichEdit.Seltext berücksichigt?
Lannes - Di 11.03.08 23:45
Hallo,
doch in den Beiträgen waren schon Hinweise in die richtige Richtung enthalten:
Die Stichworte sollten weiter helfen: RtfCallback EM_STREAMIN EM_STREAMOUT SFF_SELECTION
Sors - Fr 14.03.08 18:18
Hallo,
mit der
function _AddRTFCallback
kann ich meine Auswahl durch den Inhalt des Streams ersetzen. Ich möchte aber die Formatierung meiner Auswahl an mein zweites RichEdit weitergeben und nicht meine Auswahl durch den Inhalt des Stream ersetzen.
Sors - Sa 15.03.08 14:21
Titel: Hoffentlich letztes Problem
Danke. :O) Genau das, was ich gesucht hatte.
Mein nächstes und hoffentlich letzes Problem ist folgendes:
Kann man über die gleichen funktionen und prozeduren aus dem Codebeispiel den fontstyle auslesen?
Bsp: Ich habe nun den Text im RTF Format mit Formatierung vorliegen. Jetzt soll der Text Zeile für Zeile abgearbeitet werden und der Schriftstyle z.B. fett, kursiv, untersttichen, normal jeder einzelnen Zeile ermittelt werden.
Zum Beispiel in etwa so:
Delphi-Quelltext
1: 2: 3: 4:
| For i := 0 to Richedit1.lines.count-1 do begin printer.canvas.font.style := Richedit1.lines[i].Font.Style; end; |
KLAR ist hier, dass
Richedit1.lines[i].Font.Style; NICHT funktioniert. Aber ich hoffe ihr wisst nun, was ich in etwa meine und könnt mir weiterhelfen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!