Hola gluglu.
Gracias por soportar mi ignorancia y mi pesadez.
Si el código lo he puesto en el evento ondrawcolumncell.
El código que me has pasado pinta la linea completa, pero eso no es lo que necesito.
Yo necesito que pinte una celda nada más, no la linea completa.
Ejemplo:
Mi DBGrid tiene 5 columnas, Fecha,Concepto,Ingresos,Gastos y Saldo.
Tan solo necesito que si en la columna saldo hubiese algun valor negativo pues sencillamente que pinte esa celda de rojo, solo donde está el valor negativo.
Bueno y el código con el que lo estoy intentando es el siguiente.
procedure TF_Caja.DBGCajaDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.Dataset.FieldbyName('SALDO').AsFloat < 0 then
if (gdFocused in State) then
Begin
DBGCaja.canvas.brush.color := clBlue;
end
else
Begin
DBGCaja.Columns[5].Font.Color := clRed; // este para el Texto
DBGCaja.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;
End;
Espero y deseo no molestar mucho.
Gracias.