Cita:
Empezado por Red_Leon
Se llama desde una ventana, pero si a modo de SplashScreen.
Se utiliza al presentar un informe, la carga de este formulario y un informe de grandes dimensiones puede tardar entre 20 y 30 seg.
Entonces llamo al formulario de Espera, y despues ejecuto la función del informe, para que no se quede bloqueado llamo a Application.ProccessMessage, cuando termina la función del informe llamo a cerrar el Formulario y si la aplicación no tiene el foco de windows (estado minimizado o otra aplicación delante) el Formulario Espera no se cierra, si lo conserva se cierra.
|
Me parece que los tiros vienen porque hay algún componente en la ventana que no se ha cerrado.
- Prueba a poner una variable booleana global (por ejemplo
CerrarVentana que inicializas a
false en el evento
OnCreate de la ventana de espera.
- Al finalizar tu función la cambias a
true.
- Yo lo que hago es crearlas y eliminarlas cada vez que las necesito, por lo que en tu aplicación pones donde necesites:
Código:
Application.CreateForm(TForm_Espera, Form_Espera);
with Form_Espera do begin
TuFuncion;
while not CerrarVentana do
Application.ProcessMessages;
Hide;
Free;
end;
A mi no me da problemas con las SplashScreen, pero si se te sigue colgando puedes probar a poner en el evento
OnClose un bucle que te elimine los objetos que tenga la ventana para comprobar cual es el que no ha cerrado completamente
Saludos
salvica