Informacion

Cómo cambiar la coloración en el componente TDBGrid

Cómo cambiar la coloración en el componente TDBGrid

Agregar color a las cuadrículas de la base de datos mejorará la apariencia y diferenciará la importancia de ciertas filas o columnas dentro de la base de datos. Haremos esto enfocándonos en DBGrid, que proporciona una excelente herramienta de interfaz de usuario para mostrar datos.

Asumiremos que ya sabe cómo conectar una base de datos a un componente DBGrid. La forma más fácil de lograr esto es usar el Asistente para formularios de base de datos. Selecciona el employee.db desde el alias DBDemos y seleccione todos los campos excepto EmpNo.

Columnas para colorear

Lo primero y más fácil que puede hacer para mejorar visualmente la interfaz de usuario es colorear columnas individuales en la cuadrícula de datos. Lo lograremos a través de la propiedad TColumns de la cuadrícula.

Seleccione el componente de cuadrícula en el formulario e invoque el editor de columnas haciendo doble clic en la propiedad Columnas de la cuadrícula en el Inspector de objetos.

Lo único que queda por hacer es especificar el color de fondo de las celdas para cualquier columna en particular. Para el color de primer plano del texto, vea la propiedad de fuente.

Propina: Para obtener más información sobre el editor de columnas, busque Editor de columnas: crear columnas persistentes en sus archivos de ayuda de Delphi.

Filas para colorear

Si desea colorear la fila seleccionada en un DBGrid pero no desea usar la opción dgRowSelect (porque desea poder editar los datos), debe usar el evento DBGrid.OnDrawColumnCell.

Esta técnica demuestra cómo cambiar dinámicamente el color de texto en un DBGrid:

procedimiento TForm1.DBGrid1DrawColumnCell
(Remitente: TObject; const Rect: TRect;
DataCol: entero; Columna: TColumn;
Estado: TGridDrawState);
empezar
Si Tabla1.FieldByName ('Salario'). AsCurrency> 36000 luego
DBGrid1.Canvas.Font.Color: = clMaroon;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Columna, Estado);
fin;

Aquí se explica cómo cambiar dinámicamente el color de un fila en un DBGrid:

procedimiento TForm1.DBGrid1DrawColumnCell
(Remitente: TObject; const Rect: TRect;
DataCol: entero; Columna: TColumn;
Estado: TGridDrawState);
empezar
Si Tabla1.FieldByName ('Salario'). AsCurrency> 36000 luego
DBGrid1.Canvas.Brush.Color: = clWhite;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Columna, Estado);
fin;

Celdas para colorear

Finalmente, aquí está cómo cambiar el color de fondo de las celdas de cualquier columna en particular, más el texto color de primer plano:

procedimiento TForm1.DBGrid1DrawColumnCell
(Remitente: TObject; const Rect: TRect;
DataCol: entero; Columna: TColumn;
Estado: TGridDrawState);
empezar
Si Tabla1.FieldByName ('Salario'). AsCurrency> 40000 luego
empezar
DBGrid1.Canvas.Font.Color: = clWhite;
DBGrid1.Canvas.Brush.Color: = clBlack;
fin;
Si DataCol = 4 luego // 4ª columna es 'Salario'
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Columna, Estado);
fin;

Como puede ver, si el salario de un empleado es superior a 40 mil, su celda Salario se muestra en negro y el texto se muestra en blanco.