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 09-10-2007
pmcastilla pmcastilla is offline
Miembro
 
Registrado: jul 2006
Posts: 22
Poder: 0
pmcastilla Va por buen camino
Thumbs down Como insertar caracteres de colores en RichEdit

Hola Gente,
Estoy buscando una forma sencilla de insertar uno o varios caracteres de coloers en un RichEdit. Por ejemplo, estoy haciendo un desarrollo que necesito generar 24 campo de un maximo de 10 caracteres y necesito diferenciar alguno que se consideran "especiales", para esto estoy utilizando un RichEdit donde escribo es texto normal al presionar un boton inserto un caracter de color rojo para diferenciarlo del resto. Ademas llego un vector con las posiciones de los caracteres "especiales". Para hacer todo esto tengo un codigo muy complejo y estoy seguro que debe existir una forma mucho mas simple y segura. Alguien me daria una idea o una ayudita?
Desde ya les agradezco por tomarse el tiempo de leerlo!!!!
Responder Con Cita
  #2  
Antiguo 09-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lo normal es preparar un botón con el siguiente código:
Código Delphi [-]
if rich.SelLenght = 1 then  // solo si hay 1 letra seleccionada
with rich.SelAttributes.Font do
  if Color = clRed then
    Color := clWindowText
  else
    Color := clRed;

Ahora el usuario selecciona con el ratón el carácter que quiere colorear y pulsa ese botón alternando el color de la selección.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 09-10-2007 a las 15:21:13.
Responder Con Cita
  #3  
Antiguo 09-10-2007
pmcastilla pmcastilla is offline
Miembro
 
Registrado: jul 2006
Posts: 22
Poder: 0
pmcastilla Va por buen camino
Gracias Lepe!, pero lo que nesecito es que al presionar un boton se inserte donde se encuentre el cursor un caracter "especial", osea una letra de color rojo.
Igualmente muchas gracias!!!!
Responder Con Cita
  #4  
Antiguo 09-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Los tiros van por donde ha dicho Lepe. La madre del cordero está en la propiedad "SelAtrributes". Con ella puedes establecer el color y la fuente (entre otras cosas) del texto seleccionado, pero, no sólo eso, sino que, de hecho, estableces también el color y la fuente (por ejemplo) del texto que se escriba en el "RichEdit" a partir de ahí.

Adjunto un sencillo ejemplo para ver si te haces a la idea.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 02-05-2008 a las 15:55:19.
Responder Con Cita
  #5  
Antiguo 09-10-2007
pmcastilla pmcastilla is offline
Miembro
 
Registrado: jul 2006
Posts: 22
Poder: 0
pmcastilla Va por buen camino
Hola dec, gracias por tu ayuda!! Te muestro parte del codigo que estoy usando para insertar un caracter especial.

Código Delphi [-]
         if (Form1.Frame21.RichEdit1.GetTextLen <= 9) then
          begin
            Aux:= Form1.Frame21.RichEdit1.GetTextLen + 1;
            If (Aux<=10) then
              begin
                If (calendario_control(columnas_reg,Form1.RadioGroup1.ItemIndex, Rich_position,Input)) then
                  begin
                    If(Aux=10) then
                      begin
                        columnas_reg[Rich_position,Aux]:=Input; // columnas_ reg es un array[1..24] of array[1..10] of Char;
                      end
                    else
                        columnas_reg[Rich_position,Aux]:=Input;
                    Form1.Frame21.RichEdit1.Text:= Form1.Frame21.RichEdit1.Text + Input;
                    datos_variable(columnas_reg); // recorre el array y segun si es caracter especial o no lo colorea de rojo.
                    Form1.Frame21.RichEdit1.SelStart:= Aux+1;
                    Form1.Frame21.RichEdit1.SelLength:=1;
                    Form1.Frame21.RichEdit1.SelAttributes.Color:=clWindowText;
                    If (Aux=10) then
                      begin
                        Form1.Frame21.RichEdit3.SetFocus;
                        exit;
                      end;
                    Form1.Frame21.RichEdit1.SetFocus;
                  end;
              end;
          end;

creo que es medio rebuscado, por eso queria saber bien si existia alguna forma mas sencilla.

Última edición por ecfisa fecha: 31-01-2011 a las 18:42:31. Razón: Etiquetas
Responder Con Cita
  #6  
Antiguo 27-01-2011
ezear84 ezear84 is offline
Registrado
NULL
 
Registrado: ene 2011
Posts: 2
Poder: 0
ezear84 Va por buen camino
Revivo el post para añadir un metodo sencillo de insertar caracteres con formato:

Para añadir lineas con formato no se puede utilizar

Código Delphi [-]
RichEdit.lines.add(`linea de texto 1`);

ya que añade texto plano.
Se debe hacer del siguiente modo (y se puede crear un procedimiento para hacerlo mas sencillo):

Código Delphi [-]
{poner un richEdit1 en el formulario y un boton en el evento onclick agregar:}
 with richEdit1 do
 begin
   //si se quiere añadir la linea a lo ultimo poner:
   SelStart := GetTextLen;
   //de lo contratio usar: SelStart := 0;
 
   //añadir una linea
   SelText := 'Primera linea' + #13#10;
 
   //añadir otra linea
   SelText := 'texto con formato en richedit' + #13#10;
 
   //comenzar a cambiar el texto
   SelAttributes.Size := 13;
 
   //negrita + rojo
   SelAttributes.Style := [fsBold];
   SelAttributes.Color := clRed;
   SelText := 'Buena';
 
   //cambiamos color para el proximo texto
   SelAttributes.Color := clWindowText;
   SelText := ' Programación ';
 
   //italicas + azul
   SelAttributes.Style := [fsItalic];
   SelAttributes.Color := clBlue;
   SelText := 'en Delphi';
 
   //nueva linea
   SelText := #13#10;
 
   //texto normal otra vez
   SelAttributes.Size := 8;
   SelAttributes.Color := clGreen;
   SelText := 'Ahora podes hacer un procedimiento...';
 end;
Responder Con Cita
  #7  
Antiguo 28-01-2011
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Wink

Gracias por tu código de ejemplo, ezear84.

Claro y eficaz.

Saludos.
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
Invertir colores del texto de un richedit viveba OOP 2 27-05-2007 16:38:26
Resaltar caracteres en RichEdit jorge_mosquera Varios 1 30-01-2007 10:53:28
Insertar al final de RichEdit jorodgar Varios 4 26-05-2005 09:48:53
Insertar en el RichEdit!!! acertij022 Varios 2 12-10-2004 03:08:19
Numero de Caracteres en Richedit mosorio Varios 1 15-03-2004 19:30:18


La franja horaria es GMT +2. Ahora son las 20:00:05.


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