![]() |
Farbe in Zeilen eines RichEdits
Hi!
Ich möchte z.B. die ersten 3 zeichen eines RichEdits farbig haben. Mit SelStart und SelLength komme ich nicht weiter, dann habe ich es so versucht:
Delphi-Quellcode:
Das geht aber auch nicht, wie mache ich denn sowas?
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Text := '123'; RichEdit1.SelAttributes.Color := clBlack; RichEdit1.Text := RichEdit1.Text + ' was schwarzes'; } RichEdit1.Lines.Add(''); In der DP gibt es nur Threads, die mich nicht weiterbringen... |
Re: Farbe in Zeilen eines RichEdits
Hi,
Das geht so:
Delphi-Quellcode:
RichEdit1.Text := '123';
RichEdit1.SelStart := 0; RichEdit1.SelLength := 2; RichEdit1.SelAttributes.Color := clRed; RichEdit1.Text := RichEdit1.Text + ' was schwarzes'; RichEdit1.SelStart := 4; RichEdit1.SelLength := Length(RichEdit1.Text); RichEdit1.SelAttributes.Color := clBlack; RichEdit1.Lines.Add(''); |
Re: Farbe in Zeilen eines RichEdits
Ach so muss ich das machen, da hätt ich echt selbst drauf kommen können. :wall:
Herzlichen Dank toms. :thumb: |
Re: Farbe in Zeilen eines RichEdits
ABer das:
Delphi-Quellcode:
funktioniert nicht ganz, da hinterher der ganze Text nur schwarz dargestellt wird.
RichEdit1.Text := RichEdit1.Text + '123';
RichEdit1.SelStart := 0; RichEdit1.SelLength := 2; RichEdit1.SelAttributes.Color := clRed; RichEdit1.Text := RichEdit1.Text + ' was schwarzes'; RichEdit1.SelStart := 4; RichEdit1.SelLength := Length(RichEdit1.Text); RichEdit1.SelAttributes.Color := clBlack; RichEdit1.Lines.Add(''); Dann müsste ich ja immer die Länger der letzten Zeile auslesen, was dann schon komplizierter bei einem Zeilenumbruch ist, nehme ich an. Gibt es da nicht's, wo ich nur die einzelnen Zeilen ansprechen kann? |
Re: Farbe in Zeilen eines RichEdits
Wenn du so RichEdit1.Text lädst, dann lädst du ja jedesmal den gesamten Text von RichEdit immer wieder neu ...also werden Format-Informationen, die da mit dem alten Text assoziiert waren, auch jedesmal wieder mit überschrieben, also gelöscht. Und das RichEdit1.Text auf der rechten Seite der Zuweisung ist dann natürlich auch wieder nur ein normaler String ohne Format-Infos.
Wenn du nur eine einzelne Zeile ansprechen willst, könnte das ungefähr so aussehen:
Delphi-Quellcode:
Bei fehlendem MarkLen-Wert in der übergebenden Parameterliste würde dann die gesamte Zeile markiert.
procedure markLineNo(LineIndex : integer; clColor : TColor; MarkLen : integer = 0);
begin with form1.RichEdit1 do begin SelStart := Perform(EM_LINEINDEX,LineIndex,0); if MarkLen = 0 then SelLength := Perform(EM_LINELENGTH,SelStart,0) else SelLength := MarkLen; SelAttributes.Color := clColor; end; end; |
Re: Farbe in Zeilen eines RichEdits
Vielen Dank, funktioniert bestens :thumb:
Hab's so umgebaut:
Delphi-Quellcode:
procedure MarkLineNo(LineIndex : integer; clColor : TColor; Start, Length: integer);
begin with form1.RichEdit1 do begin SelStart := Perform(EM_LINEINDEX, LineIndex, 0) + Start; SelLength := Length; SelAttributes.Color := clColor; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz