Autor |
Beitrag |
Sors
      
Beiträge: 47
Win XP
D7 Prof
|
Verfasst: Mo 10.03.08 21:38
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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 11.03.08 00:53
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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... 
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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. 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Sors 
      
Beiträge: 47
Win XP
D7 Prof
|
Verfasst: 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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Sors 
      
Beiträge: 47
Win XP
D7 Prof
|
Verfasst: 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.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Fr 14.03.08 19:26
Hallo,
ich hab mal für Dich gesucht, in der DP hat toms ein Demo zusammengestellt:
Richedit Kopieren
Im Beitrag #9, der Code lässt sich relativ leicht an Deine Bedürfnisse anpassen.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Sors 
      
Beiträge: 47
Win XP
D7 Prof
|
Verfasst: 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
|
|