Barra de progreso

Hola buenas, el caso es que quiero poner una barra de progreso en un formulario pero no se como programarla pa que sea coherente el progreso que hace. T explico, tengo un formulario en el que dando al botón obtener saca la mac address y el nombre de host, pero tarda un poco en hacerlo (10 seg + o -), y por eso quiero poner la barra de progreso. Dentro del código de este botón se llaman a las dos funciones que calculan esto. Ahí pues un for entre las dos llamadas, pero se llena la barra y salen bastante después los valores. No se si me he explicado muy bien, espero me hayas entendido y puedas ayudarme. Gracias

1 respuesta

Respuesta
1
La barra de progreso es muy útil cuando está señalando el progreso de un bucle, ya que puedes ajustar su propiedad Max al número de iteraciones que vas a hacer, y actualizar su propiedad value en cada iteración.
El problema empieza cuando no sabes inicialmente cuantas iteraciones vas a hacer (Caso de Do ... Loop que terminan por una condición interna) porque no sabes calcular la propiedad Max inicialmente.
Y todavía peor cuando no tienes ni siquiera una iteración, sino un proceso largo que puede ejecutarse incluso fuera del control de tu programa (Caso típico el de determinadas instrucciones de SQL) Creo que tu problema es de este tipo.
En ese caso, si como dices el proceso tiene un tiempo más o menos constante puedes recurrir a que la barra se llene siempre en 10 segundos, confiando en que más o menos tardará eso siempre tu proceso.
Para conseguir llenar la barra en 10 segundos, yo pondría un control Timer, con un intervalo de por ejemplo 100 milisegundos. Esto haría que se ejecutase el código del timer cada décima de segundo, y entonces en cada ejecución aumentas el valor ce la barra en 1/100 de su valor máximo.
No es muy buena solución, pero es lo único que se me ocurre. Ten en cuenta que un proceso que dura unos 10 segundos puede durar mucho más o menos en función de las características de los equipos, de la red, etc.
Espero haberte ayudado. Suerte :-)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas