Barra de progreso en Windows 7

Posted on Actualizado enn


En el post anterior vimos como usar iconos de estado para mostrarle al usuario el estado de la aplicación, hoy vamos a ver como podemos usar una barra de progreso en el icono de nuestra app, asi como ls diferentes tipos/estilos de barra que podemos utilizar.

Usar este tipo de ayudas es de gran utilidad a los usuarios, ya que le premiten conocer sin necesidad de tener maximixada la aplicación el estado y/o progreso de cierta operación, además que nuestras aplicaciones dejan de lado la tipica ventana gris y el icono estático de siempre aprovechando las nuevas características de windows 7 creando mejores interfaces de usuario, mas amigables y mucho mas llamativas.

La interfaz que debemos pintar será algo asi (durante estos post ire completando el ejemplo del post anterior):

En la primera parte listamos los diferentes estilos que podemos usar, los cuales pertenecen a una enumerazciíon que tiene los siguientes valores:

  • Error
  • Indeterminate
  • NoProgress
  • Normal
  • Paused

En la segunda parte vamos a ir incrementando el valor de la barra de progreso (0-100) usando el control NumericUpDown con su valor minimo en 0 y el maximo en 100.

Ahora vamos a ver que debemos hacer:

1. Declaramos una enumeracion que contiene los diferentes “estilos” de barra,

Private Enum TipoBarra
Ninguna
Indeterminado
Normal
Pausado
Eror
End Enum

2. Declaramos una método que recibe como parámetro el estilo de barra escogida, y la setea a la instancia del TaskbarManager. Al igual que en el primer ejemplo validamos que el sistema operativo pueda utilizar esta caracteristica.

Private Sub EstableceBarra(ByVal oTipoBarra As TipoBarra)
If ValidaSO() Then
Select Case CInt(oTipoBarra)
Case 0
oIconTaskbar.SetProgressState(TaskbarProgressBarState.NoProgress)
Case 1
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Indeterminate)
Case 2
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Normal)
oIconTaskbar.SetProgressValue(NumericUpDownValor.Value, 100)
Case 3
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Paused)
oIconTaskbar.SetProgressValue(NumericUpDownValor.Value, 100)
Case 4
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Error)
oIconTaskbar.SetProgressValue(NumericUpDownValor.Value, 100)
End Select
Else
MsgBox(“Su sistema operativo no permite ejecutar las nuevas caracterisiticas de Windows 7, por favor actulize su sistema.”, MsgBoxStyle.Information, “Sistema no soportado”)
End If
End Sub

3. Al cambiar la selección del radiobutton llamamos la función:

Call EstableceBarra(oTipoBarra:=TipoBarra.Indeterminado)

En este caso se ha seleccionado indeterminado, es decir sera una barra continua e infinita.

4.Al cambiar el valor del NumericUpDownValor modificamos el valor de la barra, simplemente le mandamos el valor del control y le decimos que el máximo valor de la barra será de 100.

Private Sub NumericUpDownValor_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDownValor.ValueChanged
Call ValorBarra(iValor:=NumericUpDownValor.Value)
End Sub
Private Sub ValorBarra(ByVal iValor As Integer)
oIconTaskbar.SetProgressValue(iValor, 100)
End Sub

5. Ahora lo que vamos a hacer es a realizar algunas operaciones q ir mostrando el avance de la operación, al comienzo la barra será roja, luego amarrilla y despues del 80% será verde, asi el usuario sabrá en que estado se encuentran las operaciones.Para el ejemplo he usado un ciclo de 1 hasta 100 pero como saben esto se ejecutarpa demasiado rápido y no podremos ver el ejemplo, en ese caso en cada ciclo he colocado un sleep de la clase Thread el cual por el momento solo diré que “pone a dormir” al servidor durante un tiempo determinado (el tiempo se define en milisegundos), para el ejemplo serán 150.

Private Sub ButtonAutomatico_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAutomatico.Click
If ValidaSO() Then
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Paused)
oIconTaskbar.SetProgressValue(0, 100)
For i As Integer = 1 To 100
oIconTaskbar.SetProgressValue(i, 100)
Thread.Sleep(150)
If i > 40 Then
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Paused)
End If
If i > 80 Then
oIconTaskbar.SetProgressState(TaskbarProgressBarState.Normal)
End If
Next
Else
MsgBox(“Su sistema operativo no permite ejecutar las nuevas caracterisiticas de Windows 7, por favor actulize su sistema.”, MsgBoxStyle.Information, “Sistema no soportado”)
End If
End Sub

Y eso es todo, ahora podremos usar barras de progreso y así evitar que el usuario este constatemente “abriendo” nuestra aplicación para ver el progreso de alguna operación.

Ojala les sea bastante util este pequeño ejemplo.. seguiremos hablando de windows 7 en algunas entradas más..

Link del ejemplo !!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s