Ver Mensaje Individual
  #1  
Antiguo 30-03-2012
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Reputación: 15
barakuda Va por buen camino
Cancelar DBGrid

Hola, tengo un problemilla que no consigo saber solucionar veran,
tengo una DBGrid con varios botones Aceptar, Cancelar, Aplicar, Editar. Si entro en modo edición y modifico la linea en la que me situó y antes de aplicar cancelo, me elimina cualquier modificación echa, asta aquí todo OK, en cambio si antes de aplicar o cancelar hago clic en otra linea me guarda las modificaciones echas lo cual no me interesa ya que puede prestar a confusiones y falsos datos. Para ello se me ocurrió conocer en que linea estoy cuando inicio la edición, y en el evento oncellclick compararla con el actual

Código Delphi [-]
procedure TAnadir.DBGrid10CellClick(Column: TColumn);

begin
ojo_fila:=Form1.DataSource2.DataSet.RecNo; // Lee la posicion de linia en la tabla

if fila<>ojo_fila then // compara linia actual (ojo_fila) con inicio edicion (fila) deser diferentes cancela todo

begin
form1.Anadir1.DBGrid10.Options:=form1.anadir1.DBGrid10.Options +[dgCancelOnExit] -[dgEditing];
form1.ADOTable2.Cancel;

form1.Anadir1.DBLookupComboBox4.Enabled:=False; // {OFICINA}
form1.Anadir1.DBLookupComboBox5.Enabled:=False; // {RED}
form1.Anadir1.DBCheckBox12.Enabled:=False; // {OCUPADA}

end;

... pues bien aun así solo consigo cancelar el proceso clickeando en el botón cancelar.
El código que detecta la diferencia de linea en la cual estoy funciona pero no me cancela la edición y no se que mas puedo hacer.

les agradecería algún comentario o aclaración, muchas gracias de adelantado.
Responder Con Cita