Ver Mensaje Individual
  #1  
Antiguo 05-03-2012
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Reputación: 15
jocaro Va por buen camino
Ciclado código

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 { Recoger modificación último registro de tablas editado, por si no se cambia a otro registro antes de grabar (no se recogerían cambios automáticamente) } 
  FrmBasDat.TablaElementosArbol.Edit; 
  FrmBasDat.TablaElementosArbol.Post; 
  FrmBasDat.TablaNotas.Edit; 
  FrmBasDat.TablaNotas.Post; { Grabación en base de datos de los datos de la transacción pendiente } 
  FrmBasDat.ConexionBdSqlite.Commit; 
end;

Última edición por Casimiro Noteví fecha: 05-03-2012 a las 11:48:44.
Responder Con Cita