Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Memo con Línea de colores (https://www.clubdelphi.com/foros/showthread.php?t=26825)

Clantt 04-11-2005 16:04:18

Memo con Línea de colores
 
hola a todos como les va, he estado intentando escribir una linea de texto en un memo de un color y la sigueinte de otro color pero nada, mi poca experiencia me hizo hacer esto.
Código Delphi [-]
 ....
 memo1.font.color := clBlue;
 memo1.lines.add := 'Esto es un texto en azul';
 memo1.font.color := clRed;
  memo1.lines.add := 'Esto es un texto en Rojo';
 ....

Muy bonito pero cuando se aplica la línea de comando del color todo el texto del memo se cambia entonces todo queda o azul o rojo pero no cada línea, alguien sabe como hago este truco de lines de colores.

un saludo a todos :cool:

Lepe 04-11-2005 17:41:19

Un memo no soporta esa característica.

Usa un TRichEdit, con su propiedad plainText a false; para cambiar el color usa SelAttributtes donde puedes modificar la fuente para el texto seleccionado, o bien para la posición actual del Cursor.

saludos

Clantt 04-11-2005 22:04:27

gracias voy a probar esta noche mañana te comento como me fué. Chauuu

Flecha 21-12-2011 09:29:30

Por desgracia, con TRichEdit tampoco se pueden mostrar lineas en distintos colores de fondo.
Sí se pueden mostrar textos en distintos formatos (tamaños, tipos de letra, color del texto, etc...). Pero el color del fondo del texto es igual que con TMemo, o sea, no se puede diferenciar de una linea a otra...

Claro está..., a no ser que alguien conozca algún truco...
¿Alguien sabe cómo? :confused:

Ñuño Martínez 21-12-2011 09:58:19

¿Estás seguro, Flecha? Me suena que la propiedad "Font" tiene también un campo "Background". Ahora mismo estoy en la oficina así que no puedo comprobarlo...

Y si no fuera así, quizá en Dr. Dobbs, RemObjects o en el proyecto JEDI haya algo. (Creo que he escrito alguno de los nombres mal, ejem... :/ )

ecfisa 21-12-2011 16:12:26

Cita:

Empezado por Flecha (Mensaje 421671)
Por desgracia, con TRichEdit tampoco se pueden mostrar lineas en distintos colores de fondo.
Sí se pueden mostrar textos en distintos formatos (tamaños, tipos de letra, color del texto, etc...). Pero el color del fondo del texto es igual que con TMemo, o sea, no se puede diferenciar de una linea a otra...

Claro está..., a no ser que alguien conozca algún truco...
¿Alguien sabe cómo? :confused:

Hola.

No sé bién que uso pensas darle, pero si lo que buscas es resaltar un texto, línea o párrafo seleccionado, podés hacerlo de este modo:
Código Delphi [-]
implementation
...
uses RichEdit;

procedure TForm1.Button1Click(Sender: TObject);
var
  Format: CHARFORMAT2;
begin
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize:= SizeOf(Format);
    dwMask:= CFM_BACKCOLOR;
    if ColorDialog1.Execute then
      crBackColor:= ColorDialog1.Color;
    RichEdit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
  end;
end;
...

Saludos.

Flecha 21-12-2011 18:23:17

Ante todo, muchas gracias a los dos.

En Delphi6, que es el que yo uso (desfasado, ya sé, pero es lo que tenemos por aquí :( ), Font no tiene propiedad Background. Para dar distintos formatos al texto en un TRichEdit, se usa la propiedad SelAttributes, que a su vez tampoco tiene ninguna propiedad que permita cambiar el color de fondo.


Ecfisa, estoy intentando probar tu aporte, pero tengo problemas con el tipo CHARFORMAT2.
Supongo que tendrá que ver con mi versión de Delphi :(.


De todos modos no me vale el TRichEdit. Me explico.
Quiero hacerme un comparador de textos, de manera que tenga dos TMemos, uno al lado de otro, y al apretar un botón el programa encuentre automáticamente todas las diferencias entre ellos, dejando todas ellas bien resaltadas. Una vez localizadas las diferencias, poder actualizar uno u otro TMemo, o incluso poder editarlos.
No me vale el TRichEdit porque este componente es muy limitado a la hora de contener textos de gran tamaño. :(


Un saludo.

ecfisa 21-12-2011 18:57:41

Hola Flecha.

Cita:

pero tengo problemas con el tipo CHARFORMAT2.
No tendrías que tener mayor inconveniente si incluis RichEdit en la cláusula uses:
Código Delphi [-]
uses RichEdit;
En este enlace se habla de su uso en Delphi 3...



Cita:

No me vale el TRichEdit porque este componente es muy limitado a la hora de contener textos de gran tamaño.
La capacidad de un TRichEdit es muy amplia, aunque tiene un pequeño bug: No es cierto que al ajustar la propiedad MaxLength = 0 soporta el máximo posible de caracteres. Hay que darle un valor lo suficientemente grande, al ser la propiedad MaxLength de tipo Integer, el máximo valor que admitirá es 2147483647.

Un saludo.

Flecha 22-12-2011 12:53:40

:) Ok. Muchas gracias.

Desconocía lo de ese bug, así que volveré a usar TRichEdit una vez superado el problema con el tamaño.

Además, tu truco funciona perfecto. :)
Es una lástima que sólo resalte el color de fondo donde hay texto (no lo resalta en líneas vacías), pero me vale perfectamente. :)

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 11:16:29.

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