Ver Mensaje Individual
  #1  
Antiguo 01-11-2006
Delar Delar is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Reputación: 18
Delar Va por buen camino
RE HighLight 1.0 - Resalta palabras en un RichEdit

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 [-]
//WordSetBold Procedure By Delar
  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 [-]
//WordSetColor Procedure By Delar
       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 [-]
//Suponiendo que el RichEdit que queremos colorear es RichEdit1
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!
Responder Con Cita