Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-11-2006
Delar Delar is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
Delar Va por buen camino
Talking RE HighLighter 1.0 - Al fin lo consegui

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!

Última edición por Delar fecha: 01-11-2006 a las 15:38:29.
Responder Con Cita
  #2  
Antiguo 01-11-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hombre pues está muy bien, aunque es curioso, yo uso esa misma función desde hace años en mi trabajo, lo que el color y la negrita lo hace un sólo procedimiento y dependiendo de los parámetros se pone uno, otro o ambos.
La diferencia radica en que la nuestra es una funció y no un procedimiento, y es que además de remarcar el texto, lo que hace es devolverte la posición en el richedit del texto que hemos escrito.
Es decir lo usamos para búsquedas, en programas automáticos, nos sirve muchísimos, para la info que ese está tratando, no sólo el resaltar, sino el hecho de que te diga donde está, porque con eso, el programa toma unas acciones u otras. Pero bueno, no os voy a marear con asuntos de mi trabajo

De todos modos, está muy bien, y te animo a que añadas éste texto en la sección de trucos, para que todo aquel que esté buscando ésto o una orientación tenga una rápida respuestas buscando en los trucos.

Saludos y gracias por tu aportación.
Responder Con Cita
  #3  
Antiguo 01-11-2006
Delar Delar is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
Delar Va por buen camino
OK, listo, añadido a la seccion de trucos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:09:15.


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
Copyright 1996-2007 Club Delphi