Ver Mensaje Individual
  #6  
Antiguo 30-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Creo que no expresé bién la idea del código.

En el evento BeforePost se verifica el valor de la propiedad Tag del TButton y solamente guarda el registro si esta tiene el valor 1.
La propiedad Tag del TButton sólo puede tomar el valor 1 si se ejecuta el evento OnClick (btnGuardarClick) del TButton. En este procedimiento (btnGuardarClick) se pone btnGuardar.Tag a 1, se guarda el registro y se vuelve a poner en cero.
Dado que antes de guardar si o si se ejecuta el evento BeforePost y en este se impide almacenar si el valor de la propiedad Tag del boton es igual a cero, no se puede realizar esa acción por otro medio que no sea btnGuardarClick.

En resumidas cuentas, sólo se puede guardar mediante el btnGuardar.

Lo que sí noté ahora es que, habiendo empezado a editar un nuevo registro(línea) y hacer click sobre una celda anterior, copia el último en la cancelada, esto se soluciona agregando una línea:
Código Delphi [-]
procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
begin
  if btnAceptar.Tag = 0 then  // ¿ Post desactivado ?
  begin
    DataSet.Cancel;  // si, cancelar
    Abort;  // <--- Esta línea.
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-03-2012 a las 15:00:13.
Responder Con Cita