FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. Última edición por noob fecha: 11-02-2009 a las 23:23:38. |
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
Prueba con lo siguiente...
Nota: Veo que se me han adelantado .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#4
|
||||
|
||||
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).
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Muchas gracias.
Otra pregunta, ¿tienen los métodos BeginUpdate y EndUpdate algo que ver con esto? Saludos. Última edición por noob fecha: 11-02-2009 a las 23:39:31. |
#6
|
||||
|
||||
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. Última edición por Black_Ocean fecha: 12-02-2009 a las 00:18:53. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear Un Label En Tiempo De Ejecucion En C++ Builder | soancatl55 | C++ Builder | 12 | 30-11-2011 19:49:15 |
Label vertical o a 90º | andrestsas | Varios | 3 | 10-10-2007 13:33:59 |
controles en tiempo de ejecución verlos como si estubieran en tiempo de diseño | gulder | Varios | 7 | 21-04-2007 23:57:30 |
¿ Label ? | !3d1@n | Varios | 2 | 08-03-2005 20:42:47 |
label transparente | b3nshi | Varios | 1 | 06-03-2005 21:07:02 |
|