Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cancelar La Accion Cerrar. (https://www.clubdelphi.com/foros/showthread.php?t=49475)

ivanflores 23-10-2007 00:01:57

Cancelar La Accion Cerrar.
 
Hola a todos quisiera ver si Me podrian ayudar con mi siguiente problema.

Quiero Que al cerrar la ventana me detecte algun proceso activo como por ejemplo una captura incompleta, detectaria un botton activo o un edit activo y preguntarme si en verdad quiero cerrar la ventana al haber un poceso activo(claro que lo pondria yo) si es asi que cancele la accion de cerrar y me deje en la ventana que estoy trabajando, me gustaria para hacerlo con las opciones alt+F4 y el botton de cerrar (X) de la ventana, por otro lado si no hay nada activo que cierre sin preguntar nada ya sea con alt+F4, con (X) o con un boton que yo ponga. de antemano muchas gracias por su ayuda ya llevo dos semanas dandole vuelta al cerebro y todavia no encuentro la solucion.
Espero y puedan ayudarme.:)

Bicho 23-10-2007 00:13:35

Hola,

creo que existe un evento en los formularios llamado OnCloseQuery. En él debes hacer esas comprobaciones antes de cerrar. Y si se cumplen las necesarias para no cerrar debes poner la variable CanClose a False;

SAludos

jhonny 23-10-2007 00:14:15

En el evento OnCloseQuery del formulario en cuestion puedes hacer ese tipo de validaciones, por ejemplo:

Código Delphi [-]
CanClose := (MessageDlg('Seguro que desea cerrar la aplicación', mtConfirmation, [mbYes, mbNo], 0) = mrYes);

Y listo ;).

ivanflores 23-10-2007 23:16:51

Pero en caso de que no haya nada activo, quiero que me cierre el form sin necesidad de preguntar nada.... algo asi, doy un ejemplo simple.

Código Delphi [-]
if button1.enabled=true;
then
showmessage(' Existe un proceso sin finalizar, no puede salir, cancele la operacion para poder salir.')
//aqui quiero que me cancele la accion salir//
else
close;
end;
****Esta claro que este codigo no trabaja, es solo un simple ejemplo que pongo para que se den una idea de lo que quiero hacer y me puedan hechar una mano.***
:confused:
Todo esto lo quiero hacer mediante las opciones de cerrar, claro esta que la forma lleva un boton de cerrar el cual al tener activo el proceso de captura se inactiva, lo cual queda activo alt+F4 y el botton cerrar de la aplicacion (X), tengo entendido tambien que se programaria en la propiedad onclose u onclosequery. me gustaria que me hecharan una mano, Agradesco la ayuda anterior y la voy a probar haber como me queda mejor,de nuevo muchas gracias por toda la ayuda.

egostar 23-10-2007 23:23:46

Cita:

Empezado por ivanflores (Mensaje 240626)
Pero en caso de que no haya nada activo, quiero que me cierre el form sin necesidad de preguntar nada.... algo asi, doy un ejemplo simple.


Código Delphi [-]
if button1.enabled=true;
then
showmessage(' Existe un proceso sin finalizar, no puede salir, cancele la operacion para poder salir.')
//aqui quiero que me cancele la accion salir//
else
close;
end;




****Esta claro que este codigo no trabaja, es solo un simple ejemplo que pongo para que se den una idea de lo que quiero hacer y me puedan hechar una mano.***
:confused:
Todo esto lo quiero hacer mediante las opciones de cerrar, claro esta que la forma lleva un boton de cerrar el cual al tener activo el proceso de captura se inactiva, lo cual queda activo alt+F4 y el botton cerrar de la aplicacion (X), tengo entendido tambien que se programaria en la propiedad onclose u onclosequery. me gustaria que me hecharan una mano, Agradesco la ayuda anterior y la voy a probar haber como me queda mejor,de nuevo muchas gracias por toda la ayuda.

Puedes usar la funcion MessageDlg para eso que deseas

Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MessageDlg('¿ Realmente desea salir de Sistema ?', mtInformation,
     mbYesNOCancel, 0) = mrYes then  begin
        Action := caFree;
  end
  else Action := caNone;
end;

Salud OS

walito 23-10-2007 23:30:20

Otra similar :p
Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    if MessageDlg('¿ Realmente desea salir de Sistema ?', mtInformation, [mbYes, mbNo], 0) = mrYes then
        CanClose := true
    else
        CanClose := false;
end;

Salutes


La franja horaria es GMT +2. Ahora son las 15:46: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