Ver Mensaje Individual
  #6  
Antiguo 21-01-2010
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Reputación: 21
salvica Va por buen camino
Cita:
Empezado por Red_Leon Ver Mensaje
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
Responder Con Cita