Ver Mensaje Individual
  #7  
Antiguo 17-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 22
Caro Va por buen camino
Hola, creo que el problema que tiene el amigo no es en el pintado ya que su codigo funciona sino en colocar la condición y que cuando se haga doble click sobre un registro del se pinte.

Como te dijo Crandel necesitas un campo que te haga de condición y que maneje los valores que necesitas, talvez sería bueno que aumentes un campo Estado donde 1 signifique activo y 0 No activo, los que tengas con 0 los pintas del color que quieras, ahora en el evento dobleClick del DbGrid tendrías que modificar el valor de 1 a 0 o de 0 a 1, una vez que se refresque nuevamente el DBGrid con los cambios que acabas de hacer se activara nuevamente el evento OnDrawColumnCell para hacer el repintado.

Código Delphi [-]
procedure TForm1.DBGridDblClick(Sender: TObject);
var
 codigo : String;
begin
 Query.Close;
 Case QueryDBGrid.FieldByName('estado').AsInteger Of
  0 : Query.SQL.Text := 'Update tabla set estado=1 '+
                                 'where codigo='+QueryDBGrid.FieldByName('codigo').AsInteger;
  1:  Query.SQL.Text := 'Update tabla set estado=0 where '+
                                 'codigo='+QueryDBGrid.FieldByName('codigo').AsInteger;
 end;  
 Query.ExecSQL;
 
 QueryDBGrid.Close;
 QueryDBGrid.SQL.Text := 'select * from tabla';
 QueryDBGrid.Open;
end;

Y despues como ya te han indicado preguntarías por ese campo estado.

Código Delphi [-]
procedure TF_VentaPlato.DBG_DetallesPlatoOnDrawColumns(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
 if QueryDBGrid.FieldbyName('estado').AsInteger = 0 then
  begin
   DBG_DetallesPlato.Canvas.Font.Style := DBG_DetallesPlato.Canvas.Font.Style + [fsBold];
   DBG_DetallesPlato.Canvas.Brush.Color := clRed;
   DBG_DetallesPlato.Canvas.FillRect(Rect);
State := [gdSelected, gdFocused];

DBG_DetallesPlato.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita