Autor Beitrag
Sors
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47

Win XP
D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 10.03.08 23:09 
Kopiere einfach den gesamten RTF-Text von einem zum anderen RichEdit:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 11.03.08 00:53 

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 11.03.08 16:53 
user profile iconLannes hat folgendes geschrieben:
Hallo,@user profile iconYogu: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 11.03.08 19:13 
Hallo,

user profile iconYogu 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47

Win XP
D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 11.03.08 23:45 
Hallo,

doch in den Beiträgen waren schon Hinweise in die richtige Richtung enthalten:
user profile iconLannes hat folgendes geschrieben:
... user profile iconFlocke in der Delphi-Praxis vorgestellt:
function _AddRtfCallback


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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47

Win XP
D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 14.03.08 19:26 
Hallo,

ich hab mal für Dich gesucht, in der DP hat user profile icontoms 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47

Win XP
D7 Prof
BeitragVerfasst: 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:

ausblenden 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