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 21-04-2014
UsuarioBaja123 UsuarioBaja123 is offline
Miembro
 
Registrado: abr 2014
Posts: 17
Poder: 0
UsuarioBaja123 Va por buen camino
Question Colorear una palabra en un RichEdit

Hola, necesito que un timmer lea todas las líneas (código ya lo tengo) de un TRichBox (o como se llame, no tengo el delphi delante) y mire si empieza cada por ejemplo por "Hola" y entonces ponga esa palabra en azul y el resto de la línea normal por ejemplo:

Hola Mundo

se quedaría en:

Hola Mundo

Podrían ayudarme para que localize la palabra para cambiarle el color y/o ponerla en negrita.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 22-04-2014
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 129
Poder: 18
ZayDun Va por buen camino
Hola ZaneMS,

Creo que lo que buscas es esto:

Código Delphi [-]
procedure WordsColor(RE: TRichEdit; TheWord: String; Color: TColor; Style: TFontStyles);
var
i, CharPos, CharPos2, noChars: Integer;
begin
CharPos := 0;
noChars := 0;
for i := 0 to Pred(RE.Lines.Count) do
noChars := noChars + Length(RE.Lines[i]);
repeat
CharPos2 := RE.FindText(TheWord, CharPos, noChars, [stWholeWord]);
CharPos := CharPos2+1;
RE.SelStart := CharPos2;
RE.SelLength := Length(TheWord);
RE.SelAttributes.Color := Color;
RE.SelAttributes.Style := Style;
until charpos = 0;
end;

No he entendido bien lo del timer, pero creo que es mejor que lo pusieras en el evento OnChange de el RichEdit.

Código Delphi [-]
//Ejemplo de uso
WordsColor(RichEdit1, 'Hola', clRed, [fsItalic, fsBold]);


Saludos.
Responder Con Cita
  #3  
Antiguo 22-04-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Pues creo que la lo tienes solucionado aquí. Échale un vistazo al código.
Link al hilo completo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 22-04-2014
UsuarioBaja123 UsuarioBaja123 is offline
Miembro
 
Registrado: abr 2014
Posts: 17
Poder: 0
UsuarioBaja123 Va por buen camino
Question Re: Colorear una letra con un timmer (DUDA)

Código Delphi [-]
procedure TForm1.TextoChange(Sender: TObject);
var
       Posicion : integer;
begin
if
Texto.Lines.Text:=('Hola')
then
begin
         Posicion:=ansipos('Hola',Texto.Lines.Text);
         Texto.SelStart:=Posicion-1;
         Texto.SelLength:=Length('Hola');
         Texto.SelAttributes.Color:=clred;
         Posicion:=ansipos('Hola',Texto.Lines.Text);
end
else
         Texto.SelAttributes.Color := clblack;
end;

¿Por qué no funciona?
Responder Con Cita
  #5  
Antiguo 22-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ZaneMS Ver Mensaje
Hola, necesito que un timmer lea todas las líneas (código ya lo tengo) de un TRichBox (o como se llame, no tengo el delphi delante) y mire si empieza cada por ejemplo por "Hola" y entonces ponga esa palabra en azul y el resto de la línea normal por ejemplo:
Hola ZaneMS.

No entiendo como juega el timer en todo esto, pero para cambiar el color y estilo a la primera palabra de cada línea que coincida con buscada, podes hacer:
Código Delphi [-]
procedure PaintFirstWord(RichEdit: TRichEdit; const aWord:string;
  const aColor: TColor; const aStyle: TFontStyles);
var
  Found,l: Integer;
begin
  with RichEdit do
  begin
    Found:= FindText(aWord, 0, Length(Text),[]);
    while Found <> -1 do
    begin
      SelStart:= Found;
      SelLength:= Length(aWord);
      l:= Perform(EM_LINEFROMCHAR, SelStart, 0);
      if AnsiPos(aWord, Lines[l]) = 1 then
      begin
        SelAttributes.Color:= aColor;
        SelAttributes.Style:= aStyle;
        Inc(Found, Length(Lines[l])-length(aWord));
      end;
      Found:= FindText(aWord, Found+Length(aWord), Length(Text),[])
    end;
  end;
end;

Llamada:
Código Delphi [-]
  PaintFirstWord(RichEdit1, Edit1.Text, clBlue, [fsBold]);
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-04-2014 a las 18:14:54.
Responder Con Cita
  #6  
Antiguo 22-04-2014
UsuarioBaja123 UsuarioBaja123 is offline
Miembro
 
Registrado: abr 2014
Posts: 17
Poder: 0
UsuarioBaja123 Va por buen camino
¡¡¡¡¡¡¡¡¡Gracias, efisca!!!!!!!!!

Me has resolvido tu todos los problemas que he tenido, ¡¡¡¡¡muchas gracias!!!!!
Responder Con Cita
  #7  
Antiguo 22-04-2014
UsuarioBaja123 UsuarioBaja123 is offline
Miembro
 
Registrado: abr 2014
Posts: 17
Poder: 0
UsuarioBaja123 Va por buen camino
Vale, ahora que me lo solucionaste de la mejor manera posible (que de paso digo al primero que me contestó que su código casi me había servido) este es mi problema.

Necesito que cuando tu código haga su funcionamiento si yo siga escribiendo vuelva a la letra normal. En este caso, estoy escribiendo (la palabra a buscar es "HOLA":

_____________
HOLA a todos
_____________

y me lo deja así:

_____________
HOLA a todos
_____________

Debido a que sigo escribiendo con la misma fuente anterior. Me gustaría que si usara un texto como el siguiente se quede así:

_______________
HOLA a todos
HOLA a ustedes
HOLA sin perdones (no se me ocurre nada)
hola //Ven que también me den válidas las minúsculas.
_______________

Y cuando me encuentra la palabra a poner en rojo resulta que me la selecciona lo cual no me deja escribir a menos que esté quitando el ratón todo el rato. Algo así:

Hol ---> Hola ----> Como en la imagen adjunta...

Y al seguir escribiendo me la vuelve a seleccionar y no me deja seguir.

Por favor, ayúdenme; ya que terminé el compilador en C quiero poder poner un entorno con colores y resaltos. A ver si estos meses han servido para algo. (Y no, no es de la universidad es para un proyecto mío voluntario)
Imágenes Adjuntas
Tipo de Archivo: jpg Letra.JPG (1,1 KB, 40 visitas)
Responder Con Cita
  #8  
Antiguo 22-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ZaneMS.
Cita:
Empezado por ZaneMS Ver Mensaje
Necesito que cuando tu código haga su funcionamiento si yo siga escribiendo vuelva a la letra normal.
Una posible solución es:
Código Delphi [-]
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  RichEdit1.SelAttributes.Assign(RichEdit1.Font);
end;

Otra:
Código Delphi [-]
procedure TForm1.ButtonFont(Sender: TObject);
begin
  if FontDialog1.Execute then
    RichEdit1.SelAttributes.Assign(FontDialog1.Font);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-04-2014 a las 19:56:21.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo colorear rangos de caracteres en un RichEdit nasedo Varios 2 04-03-2008 06:15:50
Leer fichero texto palabra por palabra... Lester Varios 2 03-04-2007 15:28:27
Leer palabra por palabra en Word solecito Servers 0 12-03-2007 20:58:13
Parte de un RichEdit a otro RichEdit (donde esté el cursor) Tomy Varios 3 21-12-2005 21:08:15
¿Se puede resaltar una palabra o frase en un RichEdit?. Tonio Varios 2 23-03-2004 18:56:22


La franja horaria es GMT +2. Ahora son las 04:16:46.


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