Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como insertar caracteres de colores en RichEdit (https://www.clubdelphi.com/foros/showthread.php?t=48964)

pmcastilla 09-10-2007 14:32:32

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!!!! ;):)

Lepe 09-10-2007 15:19:00

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

pmcastilla 09-10-2007 17:34:13

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!!!!

dec 09-10-2007 17:47:48

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. :)

pmcastilla 09-10-2007 18:25:08

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.

ezear84 27-01-2011 19:42:49

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;

rrf 28-01-2011 19:21:58

Gracias por tu código de ejemplo, ezear84.

Claro y eficaz.

Saludos.


La franja horaria es GMT +2. Ahora son las 16:53:39.

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