Ver Mensaje Individual
  #16  
Antiguo 05-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 27
Delphius Va camino a la fama
El código que te expuse son un ejemplo de como se usa en OnCloseQuery.

Lo que tu necesitas hacer es una combinación del onCloseQuery y OnClose.
Si lo que deseas es que el formulario se cierre independientemente si debe o no guardar los cambios deberás hacerlo empleando una variable pública o global que te permita decidir si debe guardar o no. CanClose Deberá ser True.

De modo que que debes hacer algo por el estilo:

Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var Rta: integer;
begin
 Rta := MessageBox(0, '¿Quiere usted guardar antes de salir?', 'Advertencia', MB_ICONQUESTION or MB_YESNO);
 if Rta = IDYES
    then DebeGuardar := True
    else DebeGuardar := False;

 CanClose := True; //De cualquier modo debe cerrarse. False para que no se cierre
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if DebeGuardar
     then GuardarCambios;
  Action := caFree; //caFree para que libere la memoria ocupada
end;

procedure TForm1.GuardarCambios;
begin
 // Lo que debas hacer...
end;

Espero haber sido más claro.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita