No se actualiza la propiedad Caption de un label en el tiempo correcto
Hola, tengo este código y quiero que Label1 actualice su Caption con el mensaje 'Procesando' y cuando acabe tres segundos después, que es lo que dura mi proceso aproximadamente, se actualice con el mensaje 'Procesado'.
El problema es que el mensaje 'Procesando' lo actualiza inexplicablemente después del proceso con lo que nunca llega a verse. Realmente lo que ocurre es: 1.- Procesa el repeat until 2.- Actualiza el caption de Label1 a Procesando 3.- Actualiza el caption de Label1 a Procesado ¿Qué he de hacer para que lo haga en el tiempo adecuado? ¿Por qué hace esto Delphi? Gracias. |
Creo que bastaría con llamar a Application.ProcessMessages. Con eso se le da tiempo a la aplicación para que responda a los cambios visuales necesarios.
Saludos. |
Prueba con lo siguiente...
Nota: Veo que se me han adelantado ;). |
Añade:
Después del cambio del Caption, o mejor aun, dentro del While si el proceso es muy largo. Eso permitirá a Windows que procese mensajes mientras se ejecuta el proceso (entre ellos el de pintado del Label). |
Muchas gracias.
Otra pregunta, ¿tienen los métodos BeginUpdate y EndUpdate algo que ver con esto? Saludos. |
Cita:
En tu caso, debería bastar con poner Application.ProcessMessages como te lo indicaron ateriormente cuando se trata de un cliclo con For, while, Repeat, etc. Si tu proceso es de otra cosa, tendrías que leer el bloque actual que se está ejecutando para indicarle que cuando ese bloque se ejecute, siempre te muestre el mensaje de 'Procesando' con Application.ProcessMessages, pero ahí es requiere de más trabajo, ya que hay que leer bloques de procesos. Cuando se trata de copia de archivos u otros, es fácil. También es fácil ocupar el ProcessMessages cuando se ocupa la API CreateProcess si es que lo que estás ejecutando es un proceso para Windows. Saludos. |
La franja horaria es GMT +2. Ahora son las 17:46:54. |
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