Discussion:
richedit und verschiedene Style's
(zu alt für eine Antwort)
Josef Koller
vor 20 Jahren
Permalink
Hallo,

Ich füge per Code Text in ein Richedit ein. Nun möchte ich gleich beim
Erstellen den Text unterschiedlich formatieren.
richedit.lines.add('........................'); dann
richedit1.Alignment:= tacenter; dann wieder
richedit.lines.add('........................'); dann
richedit1.Alignment:= taleftjustify;
funktioniert ja noch.

Jezt wollte ich einige der erzeugten Zeilen (Überschriften) nach dem
gleichen Muster gleich fett oder normal darstellen. Da fängt es aber schon
an.
Mit richedit.font.style wird immer die letzte Anweisung für den ganzen Text
genommen. Dann dachte ich ich setzte einfach selattribute und defattribute
jeweils vor und nach der Zeile ein. Es will einfach nicht wie es soll.

Wie bekomme ich es hin, daß die erste Zeile fett, die nächste wieder normal
und die dritte wieder fett wird?

Vielen Dank.

Josef
Peter Mueller
vor 20 Jahren
Permalink
Post by Josef Koller
Wie bekomme ich es hin, daß die erste Zeile fett, die nächste wieder normal
und die dritte wieder fett wird?
Alle Zeilen einfügen.
1. Zeile markieren (selstart, sellength) und fontstyle setzen (bold)
3. Zeile markieren (selstart, sellength) und fontstyle setzen (bold)

Peter
Josef Koller
vor 20 Jahren
Permalink
Hallo,

[...]> Alle Zeilen einfügen.
Post by Peter Mueller
1. Zeile markieren (selstart, sellength) und fontstyle setzen (bold)
3. Zeile markieren (selstart, sellength) und fontstyle setzen (bold) [...]
gerade da liegt das Problem: Ich hab es u. a. so probiert:

richedit1.Lines.add('Ein erster Test');
richedit1.selstart:=0;
richedit1.sellength:=15;
richedit1.font.Style:=[fsbold];
richedit1.selstart:=0;
richedit1.clearselextion;

richedit1.Lines.add('Ein zweiter Test');
richedit1.selstart:=16;
richedit1.sellength:=32;
richedit1.font.Style:=[fsitalic];
richedit1.selstart:=0;
richedit1.clearselextion;

Aber, wie schon gesagt, so werden beide Zeilen italic. Geht man das Testprog
einzeln durch, wird zuerst die erste Zeile bold geschrieben, dann wird die
zweite Zeile eingefügt und beide Zeilen werden italic. Irgendwas läuft da in
meinen Gedanken falsch. Vielleicht kann mir einer auf die Sprünge helfen.
Ich hab es mit clearselection und ohne probiert. Immer das Gleiche;

Vielen Dank

Josef
Peter Mueller
vor 20 Jahren
Permalink
Post by Josef Koller
richedit1.Lines.add('Ein erster Test');
richedit1.selstart:=0;
richedit1.sellength:=15;
richedit1.font.Style:=[fsbold];
^^^^ SelAttributes
Post by Josef Koller
richedit1.Lines.add('Ein zweiter Test');
richedit1.selstart:=16;
richedit1.sellength:=32;
richedit1.font.Style:=[fsitalic];
^^^^ SelAttributes

Peter
Thomas Müller
vor 20 Jahren
Permalink
Post by Josef Koller
Hallo,
........Geht man das Testprog
einzeln durch, wird zuerst die erste Zeile bold geschrieben, dann wird die
zweite Zeile eingefügt und beide Zeilen werden italic.
Wie machst Du das? Unter VB kannte ich es daß jede Codezeile einzeln
ausgeführt werden
konnte und man das abgearbeitete Ergebnis auch gleich sehen konnte
(z.B. Label1.Caption="Test" wurde sofort geändert und man konnte es sehen).
Unter Delphi ist dieses leider nicht möglich. Selbst ein
Application.ProcessMessage hilft da nicht.
Hab ich bei mir was flasch eingestellt?

MfG
Peter Mueller
vor 20 Jahren
Permalink
Post by Thomas Müller
Wie machst Du das? Unter VB kannte ich es daß jede Codezeile einzeln
ausgeführt werden
konnte und man das abgearbeitete Ergebnis auch gleich sehen konnte
(z.B. Label1.Caption="Test" wurde sofort geändert und man konnte es sehen).
Unter Delphi ist dieses leider nicht möglich. Selbst ein
Application.ProcessMessage hilft da nicht.
Hab ich bei mir was flasch eingestellt?
Da gibts nicht viel zum Einstellen. Oder ich verstehe deine Frage nicht.
Wenn du ein Label auf ein Formular pappst und in Form.Create Label1.Caption:='Test'; ausführst, steht im Label nach dem Start
'Test'.
Bei dir etwa nicht?

Peter
Thomas Müller
vor 20 Jahren
Permalink
Post by Peter Mueller
Da gibts nicht viel zum Einstellen. Oder ich verstehe deine Frage nicht.
Wenn du ein Label auf ein Formular pappst und in Form.Create
Label1.Caption:='Test'; ausführst, steht im Label nach dem Start
Post by Peter Mueller
'Test'.
Bei dir etwa nicht?
richedit1.Lines.add('Ein erster Test');
.....
richedit1.clearselextion;
Aber, wie schon gesagt, so werden beide Zeilen italic. Geht man das Testprog
einzeln durch, wird zuerst die erste Zeile bold geschrieben, dann wird die
zweite Zeile eingefügt und beide Zeilen werden italic.
Ja klar, es ging aber um die schrittweise Abarbeitung mittels F7 (siehe
oben),
da sehen ich die Änderungen erst wieder wenn ich F9 drücke oder alles
mittels Einzelschritt abgearbeitet ist.
Thomas Müller
vor 20 Jahren
Permalink
Bei mir funktioniert das sofort. Musst nur die Fenster a bisserl
zurechtrücken, sodass das Code-Fenster nicht die Anwendung
verdeckt.
Habs gerade mal gestestet:
Funktioniert bei mir auch, allerdings eben nur wenn in jeder 2.Zeile
Application.ProcessMassage steht. Also natürlich nur wenn in der Zeile davor
visuelle Komponenten angesprochen wurde, sonst macht es ja wenig Sinn ;)

Mfg + schönes WE

Loading...