Hola, en el siguiente ejemplo de código intento cerrar el form principal desde la opción 'salir' del menú y desde la opción de cierre del formulario (aspa superior derecha). Si se ha producido un cambio en los datos, aparece el messagebox, para preguntar si se salvan o no, antes de salir. Una vez contestado si o no, continua el proceso y vuelve a la procedure desde la que se llamo (
formcloseclick o
menusalirclick) y a presentar el messagebox.
Si alguien me puede ayudar se lo agradezco. No se si estoy usando mal los argumentos de las procedures, si éstas tienen alguna peculiaridad por el hecho de cerrar el form, etc.
Gracias y un saludo
Código Delphi
[-]
procedure TSDIAppForm.FormCloseClick(Sender: TObject; var Action: TCloseAction);
begin
VerSiGuardar(Sender);
Close;
end;
procedure TSDIAppForm.MenuSalirClick(Sender: TObject);
begin
VerSiGuardar(Sender);
Close;
end;
procedure TSDIAppForm.VerSiGuardar(Sender: TObject);
begin
if btnGuardar.Enabled then
if MessageBox(SDIAppForm.Handle, 'La información ha cambiado ¿Desea guardar?', 'Grabar cambios', MB_YESNO ) = IDYES then
GrabarBD();
end;
procedure TSDIAppForm.btnGuardarClick(Sender: TObject);
begin
GrabarBD();
end;
procedure TSDIAppForm.GrabarBD();
begin
FrmBasDat.TablaElementosArbol.Edit;
FrmBasDat.TablaElementosArbol.Post;
FrmBasDat.TablaNotas.Edit;
FrmBasDat.TablaNotas.Post;
FrmBasDat.ConexionBdSqlite.Commit;
end;