![]() |
RichEdit-Formatierung
Hallo...
ich hab mir jetzt alles mit der Delphisuche gesucht was ich unter ![]() wen ich die folgende funktion aufrufe, funktioniert das zwar, aber es wird nur der erste übereinstimmende text gefärbt:
Delphi-Quellcode:
bitte um hile, ich will das JEDER text (in der Prozedur Msg) im ganzen RichEdit gefärbt wird....
procedure TForm1.Colorizen(RichEdit: TRichEdit; const Msg: String; Color: TColor);
begin //RichEdit.Lines.Add(Msg); RichEdit.SelStart := Pos(Msg, RichEdit.Text) - 1; RichEdit.SelLength := Length(Msg); RichEdit.SelAttributes.Color := Color; RichEdit.SelLength := 0; end; |
Re: RichEdit-Formatierung
Pos sucht dir das erste Vorkommen von Msg. Wenn du alle färben willst, musst du es wahrscheinlich so machen:
Delphi-Quellcode:
for i := 1 to Length(RichEdit.Text)-Length(Msg)+1 do
begin if Copy(RichEdit.Text,i,Length(Msg) = Msg then begin RichEdit.SelStart := i-1; RichEdit.SelLength := Length(Msg); RichEdit.SelAttributes.Color := Color; RichEdit.SelLength := 0; end; end; |
Re: RichEdit-Formatierung
Oder Schau dir mal PosEx (siehe OH) an, damit kann man ab 'ner bstimmten Position suchen also wenn was gefunden wurde, dann einfach nach dieser Position weitersuchen.
|
Re: RichEdit-Formatierung
Sollte dann in etwa so aussehen
Delphi-Quellcode:
procedure TForm1.Colorizen(RichEdit: TRichEdit; const Msg: String; Color: TColor);
var LStartpos, LFoundpos: Integer; begin LStartpos := 1; repeat LFoundpos := PosEx(Msg, RichEdit.Text, LStartpos); if LFoundpos > 0 then begin RichEdit.SelStart := PosEx(Msg, RichEdit.Text, LStartpos) - 1; RichEdit.SelLength := Length(Msg); RichEdit.SelAttributes.Color := Color; RichEdit.SelLength := 0; LStartpos := LFoundpos + length(Msg); end; until LFoundpos <= 0; end; |
Re: RichEdit-Formatierung
Zitat:
|
Re: RichEdit-Formatierung
Da fehlt nur 'ne Klammer ;)
Code:
for i := 1 to Length(RichEdit.Text)-Length(Msg)+1 do
begin if Copy(RichEdit.Text,i,Length(Msg)[color=red][b])[/b][/color] = Msg then begin |
Re: RichEdit-Formatierung
dies bezüglich hätte ich auch noch ne frage...
wenn ich in nem String mehrere markierungen habe ([ und ]) soll der text zwischen diesen klammern rot geschrieben werden... das funkt soweit auch.. aber.. wie bekomm ich das hin das mein Prog das bei allen Klammern macht ? bei den ersten Klammern hab ich das schon mit Pos('[',msg) und Pos(']',msg) erledigen können aber wie muss ich weiter machen ? Für das bessere Verständnis: Guten Tag [anrede] [vorname] [nachname] soll zu Guten Tag [anrede] [vorname] [nachname] werden. THX 4 HELP p0w3r5tr34m3r |
Re: RichEdit-Formatierung
Nimm einfach PosEx, damit kann man ab 'ner bestimmten Position suchen.
Für PosEx gibt es hier im Forum auch ein paar nette Beispiele. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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