Ver Mensaje Individual
  #2  
Antiguo 18-11-2009
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Reputación: 0
gerardus Va por buen camino
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
 // Si estado = 1, pinta en letra roja.
  if DBGrid1.Datasource.Dataset.FieldByName('Estado').AsInteger = 1 then
    DBGrid1.Canvas.Font.Color := clRed;
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

Cordialmente,

Gerard.
Responder Con Cita