PDA

Ver la Versión Completa : Color en titulos de un DbGrid


viverosjosem
19-06-2020, 07:15:55
Hola Amigos.
Antiguamente cuando trabajaba con Delphi 6, y requeria pintar la barra de titulos de un DbGrid. usaba algo como esto:


Dbgrid1.Columns[i].Title.Color := clBlue;
Dbgrid1.Columns[i].Title.Font.Color := clWhite;



Luego pasaron los anos y me cambie a Delphi 2010. En aquel momento me di cuenta que la instruccion: "Dbgrid1.Columns[i].Title.Color", ya no funcionaba como en la version 6. En aquel momento realice todas las pruebas y cambios posibles, y nada. Busque en internet, y nada. Entonces me resigne a pensar que era un problema con la version Delphi 2010, y que lo unico que podria colorear, de la barra de titulos de un dbGrid, serian solo el texto, y no el fondo. Pero con el tiempo me compre el Delphi Tokyo. Volvi a intentar colorear el fondo de la barra de titulos de una grilla y nada. Solo podia cambiar el color y tamano del texto del titulo, no, asi, el fondo. Nuevamente busque informacion y nada. E trabajado asi, resignado durante anos, hasta el dia de hoy. Donde navegando por internet, me tope con un video en YouTube: https://www.youtube.com/watch?v=KbhAh5TaoeI, Es un programador Brasileno, que esplica las formas basicas de trabajar con un DbGrid, con delphi Rio 10.3. En este video, se puede ver que la grilla que usa, esta con sus titulos coloreados, en el texto, y el fondo. Le consulte, como lo hacia para colorear el fondo de la grilla, y me respondio que lo hacia en tiempo de diseno, asi como tambien, en tiempo de ejecucion.

En tiempo de ejecucion, con las instrucciones:


Dbgrid1.Columns[i].Title.Color := Color deseado
Dbgrid1.Columns[i].Title.Font.Color := color deseado.


Descargue una version Demo, de Delphi 10.3 Rio. Probe con un formulario y una grilla. Y lo mismo. Solo se puede colorear el texto del titulo, no, asi, el fondo. No conforme con esto, descargue un demo de Delphi 10.4 Sydney. Hice la misma prueba: Un formulario y una grilla. Y el resutado, el mismo. Solo Colorea el texto del titulo, pero no, el fondo.

En ambos casos use:

Dbgrid1.Columns[i].Title.Color := clBlue;
Dbgrid1.Columns[i].Title.Font.Color := clWhite;



Alguna idea, de que pasa. Porque no puedo colorear el fondo del titulo de una grilla?

Gracias de antemano.

Saludos.
Jose Miguel B.

Neftali [Germán.Estévez]
19-06-2020, 09:30:42
A veces, aunque no lo parezca o no se diga, los componentes de siempre (los de la VCL) si cambian y si avanzan.
En concreto en el TDBGrid a medida que han ido apareciendo versiones, han aparecido también propiedades para poder hacer cambios en el componente.
En concreto la que te está afactando a tí, son las del objeto TColumn, y la propiedad DrawingStyle del TDBGrid.
Antes algunas de estas cosas (como la que tú quieres hacer) había que hacerlas utilizando los eventos OnDrawItem, OnDrawDataCell, y similares...


El código que has puesto funciona correctamente, segun el valor de la propiedad DrawingStyle, aunque no hace falta hacerlo por código, puedes hacerlo desde el Inspector de objetos.


https://i.postimg.cc/65ZJXND8/Cambios-DBGrid.gif

viverosjosem
19-06-2020, 21:01:00
Hola Neftali.
Muy agradecido por tu respuesta. muy clara y grafica.
Como no consulte antes, aqui en el foro :D. Y todos estos anos, trabajando resignado a no poder pintar el fondo de los titulos.. ja ja ja.. Cosas que pasan.

Muy agradecido.

Saludos.
Jose Miguel B.