![]() |
Barra de progreso modal
Perdón si últimamente molesto mucho con temas que lo mismo son fáciles pero es que estoy empezando con Delphi.
Verán, ya he puesto en algunos formularios la típica barra de progreso para mientras carga o hace actualizaciones en base de datos, etc... Mi cuestión es, hay a veces, que no tengo el proceso en un formulario, por ejemplo, al darle a un botón de menú, recalcula todos los precios o cosas así. En este caso, mi intención era hacer una especie de ventanita de carga modal que simplemente fuera una barra de progreso. No estoy seguro como hacerlo, porque si hago un formulario solo con una barra de progreso y lo abro de forma modal, el proceso se está realizando en otro formulario, no puedo actualizar el modal no? Es decir, quería tener una ventana de barra de progreso genérica, modal, a la que poder invocar cada vez que quiera hacer un proceso que va a tardar y que solo muestre eso, la barra de progreso y la vaya actualizando desde otro formulario. No se si se puede hacer eso o no. Muchas gracias |
Hola a todos,
Se me ocurren tres posibles soluciones, lo que no quiere decir que no pueda haber otras también: 1º Utilizar hilos. Si el proceso que quieres llevar a cabo se realiza en un hilo diferente del principal, dicho hilo podrá actualizar el formulario modal / barra de progreso. 2º "Mover" el proceso que quieres llevar a cabo al formulario modal, esto es, realizarlo en el propio formulario modal, de modo que podrás también actualizar la barra de progreso. 3º No usar un formulario modal sino uno "StayOnTop" (acaso dicho formulario podría / debería tener como "Parent" al formulario principal). Acaso otros compañeros puedan aportar otras posibles soluciones también. :) |
Hola dec,
Gracias por responder. La opción 2 ya la tengo hecha y me funciona bien... y según te estaba respondiendo he pensado... bueno pues uso esta forma y puedo tener un form de barra de progreso con los distintos procesos que no necesiten un formulario propio, así yo creo que me iría bien y agruparía todos esos procesos en un mismo form. Un saludo! |
1 Archivos Adjunto(s)
Una cuarta que se me ocurre a las que ha propuesto [dec], es crear un formulario de progreso "tonto" y pasarle el procedimiento que debe ejecutar.
De esta forma la lógica no está en el formulario, sino que símplemente se le pasa la referencia. Además el mismo procedimiento sirve para ejecutarlo con y sin formulario. El proceso sería el siguiente:
La llamada normal sería así:
La llamada utilizando el formulario de progreso sería así:
Y el form de progreso tendría un método de clase para ejecutarlo:
Esta parte correspondería a la ejecución:
Funcionando con ambos sistemas... ![]() Os adjunto el código del ejemplo y lo subo al FTP. |
Ese es exactamente el que tenía en mente!!! voy a echarle un ojo.
Lo que yo tenía pensado es que el contador estuviera en la barra de progreso, es decir, que el usuario supiera cuanto falta de proceso, pero eso es lo que creo que no se puede hacer Muchas gracias! |
Yo uso una barra dentro de un pequeño formulario con un formato unificado para toda la aplicación. La llamo siempre que lo necesito con este código.
|
La franja horaria es GMT +2. Ahora son las 11:41:17. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi