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 begin
DataSet.Cancel; Abort; end;
end;
Saludos.