En una sencilla aplicación que estuve utilizando empleé este código, que no se diferencia mucho del utilizado por Ustedes y con origen en distintas fuentes (estoy seguro no es de mi creación) y me dió excelente resultado. El objetivo era que me diferenciara con colores los campos de una grid en dependencia de que estuviesen comprometidos o no los horarios solicitados por pacientes. Usaba Access como base de datos en un módulo de datos.
A continuación el código:
procedure TfrmAppControl.DBGrid2DrawColumnCell(Sender:
TObject);
var
OutRect:=TRect;
begin
OutRect:=Rect;
DBGrid2.Columns.Items[0].Font.Style:=[fsBold];
DBGrid2.Columns.Items[0].Font.Color:=clBlue;
//
If (Column.Field = DMod.tbStatStatus)
AND (DMod.tbStatStatus.AsString = 'Booked') then
begin
DBGrid2.Canvas.Font.Color:=clWhite;
DBGrid2.Canvas.Font.Style:=[fsBold];
DBGrid2.Canvas.Brush.Color:=clRed;
end;
//
If (Column.Field = DMod.tbStatStatus)
AND (DMod.tbStatStatus.AsString = 'Available') then
begin
DBGrid2.Canvas.Font.Color:=clWhite;
DBGrid2.Canvas.Font.Style:=[fsBold];
DBGrid2.Canvas.Brush.Color:=$043b154;// tono de verde
end;
//
DBGrid2.DefaultDrawDataCell(OutRect,Column.Field,State);
end;
Espero pueda servir a alguien y gracias por recibirme al Club
|