Versuch mal, ob es hiermit geht:
Delphi-Quellcode:
procedure {TfrmDemo.}MarkKeyword(RE: TRichEdit; const s: string;
CaseSensitive: Boolean);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
SearchTypes: TSearchTypes;
begin
Assert(Assigned(RE));
if CaseSensitive then
SearchTypes := [stMatchCase]
else
SearchTypes := [];
StartPos := 0;
ToEnd := Length(RE.Text);
FoundAt := RE.FindText(s, StartPos, ToEnd, SearchTypes);
while FoundAt > -1 do
begin
RE.SelStart := FoundAt;
RE.SelLength := Length(s);
RE.SelAttributes.Style := RE.SelAttributes.Style + [fsBold];
RE.SelLength := 0;
StartPos := FoundAt + Length(s);
ToEnd := Length(RE.Text) - StartPos;
FoundAt := RE.FindText(s, StartPos, ToEnd, SearchTypes);
end;
end;
Aufruf (Button1):
Delphi-Quellcode:
procedure TfrmDemo.Button1Click(Sender: TObject);
begin
RichEdit1.Lines.BeginUpdate;
try
MarkKeyword(RichEdit1, 'Höhe:', CheckBox1.Checked);
MarkKeyword(RichEdit1, 'Breite:', CheckBox1.Checked);
MarkKeyword(RichEdit1, 'Tiefe:', CheckBox1.Checked);
finally
RichEdit1.Lines.EndUpdate;
end;
end;
Ggf. musst Du eben die Typen noch anpassen, ich habe die JVCL nicht installiert und kann daher nicht nachsehen, wie das da heißen muss.