Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   HighLight (https://www.clubdelphi.com/foros/showthread.php?t=64555)

Saindoft 07-04-2009 16:41:03

HighLight
 
Hello everybody, desde hace tiempo he tratado de crear una aplicacion que reconozca cuando escriban dentro de un RichEdit palabras especiales (tales como uses , type en Delphi) y les cambie su color osea que las diferencie del resto de las otras.He visto varios trucos pero no resuelven mi problema ya que solo lo hacen desde fuera de los eventos del Richedit: Escriben la palabra y luego llaman a la funcion desde el evento Onclick de un button y yo quiero que lo haga desde el onkeypress , onkeydown para que no tenga que salirse del componente para que se realice esta funcion.Por otra parte debe cambiarle el color pero si a la palabra ke se le efectuo el cambio es modificada tambien debe ser modificado su color como todas las que no pertenecen al grupo de especiales.

Neftali [Germán.Estévez] 07-04-2009 17:33:13

Pues lo dicho.
Una búsqueda en los foros no hubiera ido mal. Supongo que es más fácil no molestarse en hacer las cosas o intentarlo. ¿Y buscar? Pa qué...

La otra guía de estilo tampoco estaría mal que la miraras.

Caro 07-04-2009 17:56:42

Hola, como te dice Neftali tienes que tratar de identificar la ultima palabra escrita y de acuerdo a eso cambiar el color, lo que te pongo es solo un ejemplo, de hecho debes hacer muchos controles, el ejemplo que adjunta Neftali en el otro hilo seguro que esta completo, no lo he visto pero seguro que si.

Código Delphi [-]
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
var
 Palabra : String;
begin
 if Key=#32 then
  begin
   With RichEdit1 Do
   begin
    Indice := PosEx(' ', RichEdit1.Text, Indice);
    Palabra := Copy(text, Indice, Length(text)-Indice+1);
 
    if Trim(Palabra)='algo' then
     begin
      SelStart := Indice;
      SelLength := Length(RichEdit1.text);
 
      SelAttributes.Color := clRed;
      SelAttributes.Style := [fsBold];
 
      SelStart := Length(RichEdit1.text);
      SelLength := Length(RichEdit1.text);
 
      SelAttributes.Color := clBlack;
      SelAttributes.Style := [];
     end;
    Inc(Indice);
   end;
  end;
end;

Indice inicializas en 0, cada ves que escribas la palabra algo se te pintara de rojo.

Saluditos


La franja horaria es GMT +2. Ahora son las 05:29:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi