Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-03-2012
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
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 Notevi fecha: 05-03-2012 a las 11:48:44.
Responder Con Cita
  #2  
Antiguo 05-03-2012
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
No entiendo muy bien tu pregunta, ya que realmente no estás preguntando nada, ni dices cuál es tu problema. Si pudieses ser más conciso, te podríamos ayudar mejor.

De todas formas, viendo el código que has puesto, te comento:
· El FormClose se llama cuando se cierra el formulario (desde cualquier sitio), por lo que en esta función es innecesario llamar a la función "Close", ya que YA se había llamado anteriormente, si no, no se habría ejecutado el FormClose.
· En MenuSalirClick SÍ es necesaria dicha llamada, si no, no se cerraría el formulario (obvio...). Sin embargo, ya que cuando haga "Close" llamará a FormClose implícitamente, NO es necesario en esta función la llamada a VerSiGuardar, ya que ya se comprobará en el FormClose.
· Sobre la función GrabarBD no te sé decir nada, ya que no suelo manejarme con bases de datos.

Espero que te sirva.
Un saludo,
LoPiTaL
Responder Con Cita
  #3  
Antiguo 05-03-2012
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Gracias por tu ayuda y por tu rapidez.

Con tus comentarios me has solucionado los dos errores que tenía en el código. Éstos provocaban que el messagebox apareciera de nuevo tras cada pulsación sobre las opciones 'si' o 'no', provocando un bucle y que el formulario siguiera abierto.

Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Código a C++ REHome .NET 0 09-06-2010 17:09:38
Porque este código me da error (adjunto código) David JAVA 1 12-03-2009 20:07:27
contraer por codigo, cxGrid (+) los nodos abiertos cerrarlos por codigo sakuragi OOP 6 27-07-2005 18:23:07
de codigo VB a codigo Delphi ingel Impresión 2 20-07-2004 14:15:44
DB por Codigo P@kito Conexión con bases de datos 1 20-08-2003 01:04:19


La franja horaria es GMT +2. Ahora son las 08:25:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi