PDA

Ver la Versión Completa : Se puede Manipular el botón de cerrar del Form (x) Delphi


Missael
08-11-2018, 20:33:57
Buenas tardes a todo el foro, tengo una duda, quiero saber si puedo manipular el botón por default del form para cerrar (x) de tal forma que en un principio solo minimice el después de realizar una acción la aplicación, al dar clic me pregunte si deseo salir realmente.

Espero puedan ayudarme

Buen día

Caminante
08-11-2018, 20:40:20
Buenas tardes a todo el foro, tengo una duda, quiero saber si puedo manipular el botón por default del form para cerrar (x) de tal forma que en un principio solo minimice el después de realizar una acción la aplicación, al dar clic me pregunte si deseo salir realmente.

Espero puedan ayudarme

Buen día


Hola


La verdad no entendi muy bien lo que escribiste, pero si lo que quieres es confirmar si se desea salir antes de cerrar el form puedes usar el evente OnClosequery del form.


procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
CanClose:=Application.MessageBox('¿Esta seguro de salir?','Salir',MB_YESNO + MB_ICONQUESTION)=ID_YES;
end;


Espero sea util


Saludos

Missael
08-11-2018, 20:50:22
Gracias por responder Caminante, tratare de ser mas especifico, lo que pasa es que tengo una aplicación que sube archivos a un servidor, pero mientras este realizando el proceso de subir los archivos, quiero que el cuadro de cerrar del form, tenga como unica accion el minimizar la aplicacion, eso ya lo estoy haciendo con el evento onClosequery, pero quiero que cuando termine de subir los archivos, tenga su funcionalidad normal, que es el de cerrar el Form

Esto se puede hacer?

Espero haber sido mas especifico en mi requerimiento.

Casimiro Notevi
08-11-2018, 21:00:20
Esquemáticamente, por ejemplo, cuando inicias una subida de archivos, pones una variable a true: bSubiendoArchivos := true;
Entonces si alguien va a cerrar el programa:
if bSubiendoArchivos then
minimize
else
close;

Caminante
08-11-2018, 21:00:46
Ahora si entendi. En tal caso puedes probar usando una variable a modo de bandera (de tipo boolean) y verificarla en el evento closequery


procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
If Bandera then
begin
canclose:=false;

MinimizarVentana
end

else

CanClose:=Application.MessageBox('¿Esta seguro de salir?','Salir',MB_YESNO + MB_ICONQUESTION+ MB_DEFBUTTON2)=ID_YES;
end;





Saludos

Missael
08-11-2018, 21:20:05
Muchas gracias Casimiro y Caminante, me ayudaron muchisimo. Muy buena la ayuda.

Saludos