Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   No cerrar hasta guardar cambios (https://www.clubdelphi.com/foros/showthread.php?t=43230)

mario2000 05-05-2007 04:57:08

No cerrar hasta guardar cambios
 
:cool: Hola amigos, mi pregunta es: Como puedo haser para que cuando a una aplicacion se le de click en el boton superior derecho con la x de serrar, le de al usuario la eleccion de cerrar o no cerrar, como cuando en word escribimos algo y sin guardar le damos click en ese mismo boton y nos envia el mensage.
y si se le dise que no lo cierre no lo hase.:p
Saludos.

egostar 05-05-2007 05:06:59

Hola mario2000

Trata de hacer lo siguiente
  1. Usa el evento OnClose de la forma,
  2. Usa un dialogo de mensaje que te recomiendo el MessageDlg.
  3. Validas en las respuestas del MessgeDlg de esta manera
  • Si se selecciona Yes realizas lo que deseas y al final colocas esta instruccion Action := caFree
  • Si Selecciona No Mandas un mensaje de aviso y asignas Action := caNone.
Trata de hacerlo y nos cuentas.

Salud OS y bienvenido al foro.

Delphius 05-05-2007 05:14:26

Para conseguir lo que deseas, debes emplear el evento OnCloseQuery:

Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if IDYES = MessageBox(Handle,'¿Desea cerrar?','Advertencia',MB_YESNO)
    then CanClose := True
    else Canclose := False;
end;

Este evento se dispara en el momento de la orden del cierre del formulario y tiene un parámetro por valor (CanClose) que permite determinar si debe o no cerrarse. Si el valor es verdadero, se ejecuta el evento OnClose que corresponde al cierre, si se pone en falso, se cancela el cierre.

MessageBox() es una función que permite mostrar en pantalla un cuadro de díalogo. Y regresa un valor que representa la acción del botón pulsado.
Por ejemplo: la constante MB_YESNO, pemite mostrar dos botones: SI y NO. Y dependiendo de cual botón se pulse... se devuelve un valor que comparo con IDYES. Si es igual... se que se ha oprimido el botón SI.

Fijate y estudia el evento onCloseQuery. Deberás codificar que hacer ante la orden SI o ante la orden NO.

Saludos,

mario2000 05-05-2007 19:27:06

Gracias
 
Muchas gracias amigos del foro son ustedes muy amables, me ha funcionado de maravilla.:D


La franja horaria es GMT +2. Ahora son las 08:22:52.

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