Hola.
Podes agregar una columna a tu tabla que sirva para saber si la fila debe ser pintada o no.
Un ejemplo muy simplificado:
Código Delphi
[-]
...
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
DS : TDataSet;
begin
DS := DBGrid1.DataSource.DataSet;
if DS.FieldByName( 'BOOL' ).AsInteger = 1 then
DBGrid1.Canvas.Brush.Color := clRed; DBGrid1.DefaultDrawColumnCell(Rect, Datacol, Column, State);
end;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
DS : TDataSet;
begin
DS := DBGrid1.DataSource.DataSet;
DS.Edit;
if DS.FieldByName( 'BOOL' ).AsInteger = 1 then
DS.FieldByName( 'BOOL' ).AsInteger := 0
else
DS.FieldByName( 'BOOL' ).AsInteger := 1;
end;
...
En este caso al campo agregado lo denominé
BOOL y usé el evento
OnDblClick.
Salida del ejemplo:
Saludos