FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
DBGrid filas de colores segun su contenido
Bueno me gustaría saber si alguien me puede decir como se puede cambiar el color de una fila en un DbGrid dependiendo de su contenido.
El caso es que estoy tirando de una base de datos en SQL y me gustaria cambiar la sila de color dependiendo de si la fecha esta vencida (Fecha anterior a la actual) o bien si existe alta prioridad. Por cierto estoy usando Delphi 5 |
#2
|
|||
|
|||
POr cierto en principio lo que tengo pensado hacer es generar un Query que cada X me lea el registro y me compare las fechas con la checha actual.
mi duda surge a la hora de poner la linea en otro color dependiendo del resultado del query |
#3
|
||||
|
||||
Es muy fácil. Tienes que usar el evento OnDrawColumnCell del DBGrid. Este evento se generará cada vez que el control necesite dibujar una celda pasándote como parámetro la columna sobre la que está la celda. Sólo tienes que verificar las condiciones del registro actual y cambiar el color del canvas si se cumple la condición y dejar que continúe el proceso normal de dibujado.
Aquí un ejemplo:
Aquí las filas con fechas vencidas aparecerán con letra de color rojo aunque me parece que también puedes usar DBGrid1.Canvas.Brush.Color := clRed; para que sea el fondo de la fila el que aparece en rojo. La condición (gdSelected in State) no es necesaria pero yo la uso porque se me hace un poco confuso que la fila seleccionada también aparezca en otro color ya que entonces no sé si está seleccionada. Si desearas colorear únicamente la celda (y no toda la fila) con el campo fecha podrías añadir la condición de que la columna coincida con el campo, algo como:
// Saludos |
|
|
|