PDA

Ver la Versión Completa : Cancelar La Accion Cerrar.


ivanflores
23-10-2007, 00:01:57
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:


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.


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
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 [-] (http://www.clubdelphi.com/foros/#)
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


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

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