Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Crear mensaje de espera (https://www.clubdelphi.com/foros/showthread.php?t=55634)

juanmdq 22-04-2008 19:12:10

Crear mensaje de espera
 
Hola amigos del club :D
Escribo en esta oportunidad para saber si a alguien ya le ocurrio o tiene idea de como hacer para crear una ventana de espera mientras el programa realiza un proceso extenso.
Yo lo encare de la siguiente manera pero no se porque no me funciona:
- Cree un formulario de espera que muestra una animacion gif.
- Cree una unidad que llama a este formulario a traves de un thread, es decir creo un thread y en el metodo execute llama al show del formulario.
Código:

procedure TEsperar.Execute;
begin
  Synchronize(Show); // Aca el Show crea el form y lo muestra
  while not Terminated do
  begin
  end;
  Synchronize(Hide); // Aca el hide cierra el form
end;


El comportamiento que tengo es el siguiente si coloco dos botones en el formulario (Iniciar y Terminar) y antes de que comienze el proceso clickeo en Iniciar el funcionamiento es el correcto, me muestra el mensaje de espera.
Si por el contrario invoco al metodo ComenzarEspera dentro del mismo procedure que realiza el proceso, nunca se muestra.

Alguna idea ???
gracias de antemano

Ñuño Martínez 23-04-2008 09:43:32

No sé si lo solucionará, pero prueba a llamar al método "ProcessMessages" del objeto Application: (lo estoy haciendo de memoria porque no tengo Delphi aquí, así que ojo, pero la idea es esta)
Código Delphi [-]
procedure TEsperar.Execute;
begin
  Synchronize(Show); // Aca el Show crea el form y lo muestra
  while not Terminated do 
  begin
    Application.ProcessMessages; { Añade esta línea. }
  end;
  Synchronize(Hide); // Aca el hide cierra el form
end;

juanmdq 23-04-2008 14:01:14

Hola, gracias por tu respuesta pero no funciono.
Tambien probe de ponerle un sleep() en el while pero tampoco funciona.

La verdad que no tengo ni idea de que puede ser :confused:


La franja horaria es GMT +2. Ahora son las 16:26:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi