Zitat von
jim_raynor:
Zitat von
Nils_13:
Das läuft aber nicht ganz, es soll sich ja nur auf alle Wörter die 'START' heißen bezeiehen und man soll natürlich noch normal in Schwarz tippen können.
Ist mit einem Richedit nicht möglich bzw. nicht performant zu machen, da du bei jeder Änderung die Markierung neu machen müsstest. Warum nutzt die nicht SynEdit. Eine Memo-Komponente mit Syntax-Highlighting. Das ist doch, was du machen willst oder?
Und bevor du fragst. Mit SynEdit kann man auch eigene Highlighter machen.
Ich weiß. Ich finde es 1. nicht so gut und 2. will ich es selber programmieren.
Wisst ihr warum bei diesem Code von mare_crisium nichts mehr markiert wird ?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Click;
searchStart := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var StartPos, ToEnd, foundAt: integer;
lsuchText : string;
lfundStelle : integer;
begin
lsuchText :='START';
lfundStelle := Memo1.FindText(lsuchText,searchStart,length(Memo1.text),[]);
if (lfundStelle > 0)
then begin
Memo1.SetFocus;
Memo1.SelStart := lfundStelle;
Memo1.SelLength := Length(lsuchText);
searchStart := Memo1.selStart + Memo1.selLength+1;
if ( searchStart > length(Memo1.text))
then searchStart:=0;
end
else searchStart:=0;
if (Memo1.selLength > 0)
then begin
Memo1.SelAttributes.color := clBlue;
Memo1.SelAttributes.style := [fsBold];
end;
end;
Der Übrsprüngliche Code sah so aus, aber da wurde halt nur ein Wort markiert, obwohl es mehrfach dastand:
Delphi-Quellcode:
suchText:='START';
foundAt := Memo1.findText(suchText,0,length(Memo1.text),[stMatchCase]);
if FoundAt <> -1 then
begin
Memo1.SelStart := FoundAt;
Memo1.SelLength := Length(suchText);
if (Memo1.selLength > 0)
then begin
Memo1.SelAttributes.color := clBlue;
Memo1.SelAttributes.style := [fsBold];
end;
//Memo1.SelAttributes.Color := clGreen;
//Memo1.SelAttributes.Style := [fsBold];
end;
Evtl. liegt der Code-Schnipsel
Delphi-Quellcode:
if (Memo1.selLength > 0)
then begin
Memo1.SelAttributes.color := clBlue;
Memo1.SelAttributes.style := [fsBold];
end;
an der falschen Stelle, aber ich habe schon alles durchprobiert, auch wie es mare_crisium gemacht hat mit zwei Buttons, es läuft nicht, egal wohin das
Delphi-Quellcode:
if (Memo1.selLength > 0)
then begin
Memo1.SelAttributes.color := clBlue;
Memo1.SelAttributes.style := [fsBold];
end;
kommt.