Bien... esto consta de dos procedures... una para poner en negrita, y otra para poner en color... pronto añadire negrita-color, cursiva... etc
Aqui va la primera (Negrita)
Código Delphi
[-] procedure WordSetBold(RichE:TRichEdit;word:string);
var
Text:string;
Pos:integer;
begin
text := RichE.Lines.Text;
repeat
Pos:=ansipos(word,text);
Riche.SelStart:=Pos-1;
Riche.SelLength:=Length(word);
Riche.SelAttributes.Style := [fsBold];
if text > Chr(1) then
begin
text[Pos+1]:=Chr(255);
end;
Pos:=ansipos(word,text);
Riche.SelStart:=Pos-1;
Riche.SelLength:=Pos;
Riche.SelAttributes.Style := [];
until (Pos=0);
end;
Y el segundo (color)
Código Delphi
[-] procedure WordSetColor(RichE:TRichEdit;word:string;col:TColor);
var
Text:string;
Pos:integer;
begin
text := RichE.Lines.Text;
repeat
Pos:=ansipos(word,text);
Riche.SelStart:=Pos-1;
Riche.SelLength:=Length(word);
Riche.SelAttributes.Style := [];
Riche.SelAttributes.Color := col;
if text > Chr(1) then
begin
text[Pos+1]:=Chr(255);
end;
Pos:=ansipos(word,text);
Riche.SelStart:=Pos-1;
Riche.SelLength:=Pos;
Riche.SelAttributes.Style := [];
Riche.SelAttributes.Color := clBlack;
until (Pos=0);
end;
Como se usa:
Código Delphi
[-]procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
WordSetBold(RichEdit1,'if');
WordSetBold(RichEdit1,'then');
WordSetColor(RichEdit1,'button_pressed',clPurple);
WordSetColor(RichEdit1,'true',clMaroon)
end;
Cada vez que se pulse una tecla, lo hace :P
No está pensado para mucho color, porque realentizaria, pero aun asi sirve.
PD: Aquí os dejo una imagen
Saludos, Delar!