Ver Mensaje Individual
  #6  
Antiguo 09-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Gelmin
en el evento de la form OnCloseQuery asignar a la variable CanClose:=false ya probe y funciona pero no me sirve porque mi aplicacion necesito que se cierre cuando se cierre la sesion de Win, y con ese codigo no me deja ni cerrar la sesion de windows porque claro hay un programa que le esta diciendo a Win que no se puede cerrar
Esta cuestión se relaciona con lo que anteriormente te expliqué en el mensaje Guardar antes de que mi aplicacion se cierre y lo diré de nuevo:

Por lo que a mi juicio es un error de diseño, Delphi no distingue si una ventana se cierra por métodos cómo Alt-F4, botón de cruz, método Close, etc. o porque se termina la sesión de Windows. Todo porque al recibir el mensaje WM_QUERYENDSESSION se limita a llamar al evento CloseQuery sin pasarle a éste algún parámetro que indique la forma en que se intenta cerrar la sesión.

La solución es redefinir el manejador del mensaje WM_QUERYENDSESSION y ahí fijar alguna bandera que indique por qué se está cerrando la sesión:

Código:
EndSession := true;
de manera que en el evento OnCloseQuery puedas actuar según el valor de dicha bandera:

Código:
CanClose := EndSession
// Saludos
Responder Con Cita