• Domingo 22 de Diciembre de 2024, 18:33

Autor Tema:  Progressbar  (Leído 6398 veces)

cachorro

  • Miembro MUY activo
  • ***
  • Mensajes: 196
  • Nacionalidad: ec
    • Ver Perfil
    • http://www.pumamix.com
Progressbar
« en: Lunes 17 de Septiembre de 2007, 23:38 »
0
hola a todos..tengo una aplicacion y quiero utilizar un progressbar pero lo q no se como hacer es que el progressbar aumente cuando estoy grabando un datos o cuando hago una busqueda....espero q m puedan ayudar..gracias de antemano..
La Vida es un Reto..Enfrentala....

Scherzo

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
    • http://www.mma-spain.com
Re: Progressbar
« Respuesta #1 en: Martes 25 de Septiembre de 2007, 09:47 »
0
Hola, el uso de un ProgressBar se puede encontrar con dos situaciones diferentes.

1.- Aquella situación en la que conoces cuántos datos vas a tratar o cuántas operaciones vas a realizar. Por ejemplo, tienes 100 alumnos a los que quieres procesar y sabes que son 100, por lo tanto el propio número de alumnos te indica cómo de largo va a ser el proceso.

2.- La otra situación es aquella en la que no sabes cuánto va a ser todo el proceso, por ejemplo una situación en la que has de ir procesando datos de forma indefinida hasta que se da una cierta condición, por ejemplo, procesar alumnos hasta que encuentres el primero que haya sacado un 10. No sabes si te lo vas a encontrar después de procesar 50, 100, 2000 o los que sean.

No sé si me explico.

En .NET, por lo menos en la versión 2005, tienes el control ProgressBar que permite adaptarse a ambas situaciones.

Para el primer caso tienes dos .Style : Block y Continuous. Para el segundo es ideal el estilo Marquee.

Los dos primeros estilos tienen un valor mínimo y un valor máximo, que serán aquellos valores entre los que te vas a mover. Lo idea es que el valor máximo coincida con el valor de datos a procesar. Si por ejemplo vas a procesar los datos de 500 alumnos, pues el valor mínimo sería un 0 y el máximo 500. De esa forma cada vez que proceses a un alumno, incrementas el .Value del ProgressBar.

En caso que tuvieras que manejar valores muy altos, por ejemplo que tengas que manejar 2 millones de datos, puedes hacer que en lugar de ir de 0 a 2 millones vaya de 0 a algún múltiplo, y sólo incrementar el valor de .Value cada vez que proceses un dato cuyo índice sea múltiplo.

El tipo Marquee es un tipo de ProgressBar que posiblemente hayas visto alguna vez en instalaciones de aplicaciones (me suena que Windows Update la usa) o cuando uno realiza conexiones de red a algunos sitios, etc., es una barra de progreso que se mueve continuamente y cuando llega a la derecha vuelve a aparecer por la izquierda. Con este movimiento permanente lo que hace es dar la señal de que se está procesando algo, pero no se sabe cuándo va a terminar.


Para tu caso concreto tendrás que ver cuál es la situación que más se adapta y decidir una u otra barra de progreso. Si sabes cuántos datos vas a tener que procesar desde un principio, entonces decántate por el primer tipo de barra de progreso. Si no conoces cuántos datos van a ser, entonces por la segunda.

Si te lías avisa y te concreto mejor tu caso particular.

Saludos

cachorro

  • Miembro MUY activo
  • ***
  • Mensajes: 196
  • Nacionalidad: ec
    • Ver Perfil
    • http://www.pumamix.com
Re: Progressbar
« Respuesta #2 en: Jueves 27 de Septiembre de 2007, 00:05 »
0
hola Scherzo.....bueno entiendo lo q m explicas sobre elegir un tipo de progress u otro...pero lo que no se como hacer es que si uso el marquee como lo hago q comienze y que termine cuando ya se realizao el trabajo solicitado.....y otra cosa cuando tengo q acceder a la base de datos y en la tabla alumnos tengo 100 registros...ahi utilizo el Continues verdad...pero como hago para que el progress se cargue de acuerdo al numero de registro que esta y cuando lo encontro termine de cargarse el progress y se detenga.....espero me haya explicado bien.....y gracias por tu ayuda.....
La Vida es un Reto..Enfrentala....

Scherzo

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
    • http://www.mma-spain.com
Re: Progressbar
« Respuesta #3 en: Lunes 1 de Octubre de 2007, 17:17 »
0
En un ejemplo de 500 alumnos, configuraríamos la barra de progreso así:

Código: Text
  1.  
  2. oProgressBar.Maximum = 499; //va de 0 a 499, es decir 500 posiciones
  3. oProgressBar.Minimum = 0;
  4. oProgressBar.Value = 0;
  5.  
  6.  

.Maximum nos marca el límite superior de la barra de progreso.
.Minimum hace lo propio con el límite inferior.
.Value marca el valor actual de la barra de progreso, es decir, cuánto queremos ver relleno dentro de la barra. Inicialmente debería coincidir con el valor de .Minimum.

Entonces, como en este caso conocemos cuántos datos vamos a procesar, montamos por ejemplo un bucle FOR:

Código: Text
  1.  
  2. for (i=0&#59; i < 500&#59; i++)
  3. {
  4.     //Lo primero que hacemos es asignar a .Value el valor del registro actual
  5.     //marcado por el valor de 'i'
  6.     oProgressBar.Value = i;
  7.  
  8.     //Nos aseguramos que se refresca la imagen de la barra, para que así el
  9.     //usuario pueda ver cómo va progresando.
  10.     oProgressBar.Refresh();
  11.  
  12.     ...
  13.    
  14.     //el bucle hace cosas y procesa los registros
  15.  
  16.     ...
  17. }
  18.  
  19.  

Con este esquema, a cada iteración la barra de progreso se va a ir refrescando con el mismo valor que tenga 'i', por lo que a medida que avance el proceso de los registros, la barra de progreso se irá rellenando. Cuando i valga 500, terminará, y el .Value de la barra de progreso valdrá el .Maximum, por lo que estará totalmente rellena.

Espero haberte aclarado la duda.

Saludos

cachorro

  • Miembro MUY activo
  • ***
  • Mensajes: 196
  • Nacionalidad: ec
    • Ver Perfil
    • http://www.pumamix.com
Re: Progressbar
« Respuesta #4 en: Jueves 4 de Octubre de 2007, 00:32 »
0
Scherzo gracias por la ayuda te lo agradezco mucho...
La Vida es un Reto..Enfrentala....