Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2004
ramonibk ramonibk is offline
Miembro
 
Registrado: may 2004
Posts: 193
Poder: 20
ramonibk Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 24-08-2004
ramonibk ramonibk is offline
Miembro
 
Registrado: may 2004
Posts: 193
Poder: 20
ramonibk Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 24-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(...);
begin
  if FechaVencida and (gdSelected in State) then
    DBGrid1.Canvas.Font.Color := clRed;

  // Pintado normal
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

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:

Código Delphi [-]
if (Column.FieldName = 'fechavencida') then
  ...

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:22:02.


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
Copyright 1996-2007 Club Delphi