Hola,
Mira los eventos OnDrawDataCell y OnDrawColumnCell del grid, Allí puedes colorear a tu gusto.
El problema es que vas a tener que guardar el estado de la fila en algun sitio (campo) porque las filas no se pintan cuando tu quieres sino cuando el grid lo decide.
O sea que tu clic debe cambiar el valor de algun campo en el dataset que hay detrás del grid para poder pintar luego segun al valor del campo.
p.e. añades un campo "estado" de tipo integer, que al hacer doble clic se cambie de zero a 1.
Código Delphi
[-]procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if DBGrid1.Datasource.Dataset.FieldByName('Estado').AsInteger = 1 then
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;
Cordialmente,
Gerard.