Sección de tutoriales y manuales vb

Control ProgressBar - Barra de progreso

Volver al índice



 


Guía con ejemplos para usar el control Progressbar de Visual basic

 

 

 

Nota: en el siguiente enlace se encuentra un listado con enlaces relacionados : Progressbar enlaces


 

1 - Descripción del control

El control ProgressBar nos permite medir el progreso de una tarea o proceso en nuestro programa

Este control viene con el conjunto de controles que se incorporan en el ocx MsComctl32.ocx con el nombre de Microsoft Windows Common Control 6

 

vista de la ventana de componentes para agregar el control al proyecto

 

 

Una vista previa del control ProgressBar:

Vista previa del control progressbar de visual basic

 

Si bien es posible crear barras de progreso sin utilizar un control adicional, mediante el ProgressBar podemos implementar de una manera rápida y fácil, mediciones de progreso de una determinada tarea

 


2 - Propiedad Value , Max y Min

Este control posee 3 propiedades fundamentales para trabajar en el código a la hora de mostrar dicho progreso en la barra.

 

Estas tres propiedades principales son:

Nota: Este control también posee otras propiedades, pero que no son determinantes y que están relacionadas mas a su aspecto gráfico.


3 - Un ejemplo simple para ver como funciona el control

 

Este ejemplo consite en generar un bucle For-Next desde 0 hasta 5000, y en cada pasada del bucle, se irá asignando el valor de la misma a la propiedad Value del control.

Al Progressbar, en la propiedad Min le establecemos el valor 0. A la propiedad Max el valor máximo del proceso y la propiedad Value tomará como valor el valor de x, la variable del For - Next

Para el ejemplo agregar los siguientes controles en un formulario:

 

Pegar el siguiente Código fuente en el Formulario:

Private Sub Command1_Click()

Dim x As Long


    ' Generamos un ciclo For
    For x = ProgressBar1.Min To ProgressBar1.Max
      
      ' Mostramos la veriable x (el value) en Label1
        Label1 = x
      
      ' Usamos DoEvents para poder visualizar el conteo en el Label
        DoEvents
        
      ' Asignamos en la propiedad Value del control ProgressBar _
        el valor de x para ir incrementando la barra de progreso
        ProgressBar1.Value = x
    
    Next x

End Sub

 

Private Sub Form_Load()

'Le asignamos las propiedades para el mínimo, máximo valor del Progress bar
    With ProgressBar1
        
        .Max = 5000
        .Min = 0
        .Value = 0
    
    End With

End Sub 

 

Las propiedades Min y Value pueden establecérsele valores como mínimo de 0, osea que un valor inferior a 0 producirá un error 380 en tiempo de ejecución, la descripción del error es:

El valor de la propiedad no es válido

 

El ProgressBar no tiene ninguna Propiedad para medir el porcentaje. Para el ejemplo anterior podríamos hacerlo de esta manera, y mostrar además de la barra de progreso, un porcentaje del mismo utilizando un control Label, como muestra este gráfico:

 

Mostrar porcentaje en una barra de progrso

 

Private Sub Command1_Click()


'Le establecemos un valor para el máximo
ProgressBar1.Max = 50500

    For i = 0 To ProgressBar1.Max
    
        ' Valor actual del Progressbar
        ProgressBar1.Value = i
        
        ' Visualizamos el porcentaje en el Label
        Label1 = CLng((ProgressBar1.Value * 100) / ProgressBar1.Max) & " %"
        
        
        DoEvents

    Next

End Sub 

 


4 - Propiedad Scrolling

Para cambiar el aspecto gráfico del Progressbar, hay una propiedad llamada Scrolling. Esta tiene 2 valores posibles, 0 y 1.

Si le colocamos esta propiedad en 0, el Progress tendrá una vista dividida por recuadros. Si tiene el valor 1, la barra de progreso es continua, como se ve en la siguiente imagen

 

imagen previa de la propiedad

 


5 - Ejemplo 2

Ahora un ejemplo que tenga algún sentido mas práctico que el visto al comienzo (por lo menos un poco mas de sentido)

Este consiste en agregar en un control ListBox la fecha de modificación de todos los archivos de un directorio, y mostrar en la barra de progreso el tiempo que tarda.

Para este ejemplo hay que agregar un control DirListBox llamado Dir1, un FileListBox File1, un Progressbar1, un Label1, un ListBox llamado List1 y un Command1 como está en la imagen:

vista del formulario de ejemplo para listar los archivos y poder mostrar el progreso en el control Progressbar

 

El código fuente del formulario es el siguiente:

Private Sub Command1_Click()


'Borrmos el contenido del ListBox
List1.Clear

'Si no hay archivos en el directorio salimos de la rutina

If File1.ListCount = 0 Then
   MsgBox "No hay archivoes en el directorio": Exit Sub
End If

'Le indicamos como valor máximo al progressbar la cantidad _
 de archivos que tiene el control

ProgressBar1.Max = File1.ListCount


For i = 0 To File1.ListCount - 1

'Agregamos la fecha de modificción del archivo en el List1 _
 con la función FileDateTime de visual basic
List1.AddItem FileDateTime(Dir1.Path & "\" & File1.List(i))

'Asignamos al Value el valor de i
ProgressBar1.Value = i + 1

'Mostramos el porcentaje en el Label1
Label1 = CLng((ProgressBar1.Value * 100) / ProgressBar1.Max) & " %"


DoEvents

Next

End Sub

Private Sub Form_Load()

'Le indicamos al FileListBox que liste todos los ficheros, _
 ocultos, de sistema etc...
    
    With File1
        
        .Archive = True
        .Normal = True
        .ReadOnly = True
        .Hidden = True
        .System = True
    
    End With


End Sub

Private Sub Dir1_Change()
File1 = Dir1
End Sub 

 

En el ejemplo anterior, se visualiza por medio de un DirListBox y un FileListBox, los archivos de la pc. Al presionar el Command1 se recorre toda la lista del control File1 (mediante la propiedad List) y se recupera y se agrega con la función FileDateTime de Visual Basic la fecha de modificación de los archivos en el control ListBox.

Nota: Tener en cuenta que al listar un directorio que tiene pocos archivos, el progreso no se podrá visualizar ya que va a ser muy rápido, en cambio si listás un directorio con muchos ficheros, como por ejemplo el directorio de sistema de windows ( System32 en xp ), el progreso lo vas a poder visualizar correctamente.

Hay otras propiedades como se mencionaron para este control, pero no son importantes, y están mas relacionadas a la visualización y disposición del mismo, como Orientation, BorderStyle, Scrolling etc...

 


6 - Barra de progreso con los temas de xp

 

Una forma de poder aplicar los diferentes temas de windows Xp a las barras de progreso, es mediante el siguiente control ocx gratuito que los podés descagrar desde este enlace : Ocx Windows XP C1

 

Vista de los diferentes estilos

Tema Win XP OliveGreen ( verde oliva )

Vista previa de la barra de progreso

Tema Win XP Silver Theme ( plateado )

vista previa del formulario de ejemplo con el progress

Tema Win XP Silver Theme ( Clásico )

vista del ejemplo

 

6 - Recursos Visual basic - Rrelacionados

 


Volver al menú sobre los controles de Visual basic

 


Buscar en Recursos vb