Delphi - Color de celda en DBGRID

 
Vista:

Color de celda en DBGRID

Publicado por jose (1 intervención) el 08/06/2001 13:01:51
¿Cómo puedo cambiar el color de una celda en un dbgrid dependiendo del valor al que en ese momento apunte el dbgrid?
Explicación. Quiero conseguir que en una columna 'punteado' sea la celda de esa columna de color azul si tiene como valor una 'a' o rojo si tiene como valor una 'i'. Sólo quiero cambiar el color de la celda, no de toda la fila.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Color de celda en DBGRID

Publicado por Fer (117 intervenciones) el 11/06/2001 11:48:16
Prueba con algo así:

En el OnDrawColumnCell escribe:

procedure TFormulario.DBGridDrawColumnCell( Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin
inherited;

// establezco la condición para la cual quiero remarcar la fila de tdbgrid:
if condicion then begin
// establezco el color del pincel
TDrawGrid(sender).canvas.Brush.Color := clGreen;
// repinto la celda
TdbGrid(sender).DefaultDrawColumnCell(Rect, Datacol, Column, State);
end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Color de celda en DBGRID

Publicado por jose (1 intervención) el 11/06/2001 13:38:32
Sólamente quiero cambiar el color de la columna dentro de una determinada fila, no de toda la fila. ¿Se haría de la misma forma?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Color de celda en DBGRID

Publicado por Santiago (3 intervenciones) el 11/07/2001 20:24:37
Para que se procese solamente una de las columnas podés utilizar Datacol, que nos indica cuál es la columna que se está tratando actualmente. Y según el ejemplo de Fer, quedaría completo de la siguiente manera.

if DataCol = 3 then
// Para solamente tratar la columna 3
begin
if Condicion then begin
// En qué casos se debe pintar de color diferente la celda...
TDrawGrid(sender).canvas.Brush.Color := clGreen;
TdbGrid(sender).DefaultDrawColumnCell(Rect, Datacol, Column, State);
end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar