Ich füge in meinem Programm in einen RichEdit eine Textzeile ein und möchte diesen Text z.B. in rot schreiben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| var iSize: Integer; cColor: TColor; begin
with RichEdit do begin
Lines.Add(strText);
pLine := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0); SelStart := Perform(EM_LINEINDEX, pLine - 1, 0);
SelStart := Perform(EM_LINEINDEX, pLine - 1, 0); SelLength := Length(strText); SelAttributes.Color := cColor; SelAttributes.Size := iSize;
Perform(EM_SCROLLCARET, 0, 0);
end; |
So weit, so gut. Nur, wenn der Text so lang ist, dass er umgebrochen wird (WordWrap=True), d.h. also teilweise im RichEdit in eine neue Zeile kommt, dann funktioniert meine Prozedur nicht mehr. Nur die letzte Zeile wird dann rot geschrieben. Wie kann ich z.B. auf das SelStart kommen, indem ich die letzte Stelle MINUS die Länge des strText nehme ? Wäre doch einfacher als mit dem ganzen EM_LINEINDEX-Zeug, oder ? Ich weiß nur nicht wie ?
Oder hat jemand sonst noch eine Idee ?
Danke inzwischen
Heinz
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
Es ist besser, Genossenes zu bereuen, als dass man nichts genossen hat.