Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



miércoles, 5 de abril de 2017

Como hacer un formulario de "espera" con animación


Como hacer un formulario de "espera" con animación
Algunas veces en nuestras aplicaciones tenemos que hacer una tarea que desconocemos cuanto tiempo va a tardar. Si mientras se realiza esa tarea, no mostramos nada al usuario, puede dar la impresión que la aplicación se ha colgado. La forma hace que el usuario no se lleve esa impresión, es mostra algo (por ejemplo  una animación (por ejemplo).

En el siguiente video os explico como hacerlo.



Como veis, se trata de usar las propiedades de la clase process (proceso):
Public prsBatch As Process
....
 prsBatch = Shell "sleep 10" '..... 'comando que no sabemos cuanto dura su tiempo de ejecucion
  Inc Application.busy
  While prsBatch.state = prsBatch.running
    Wait 0.1
    dibujapuntitos(etiqueta)
    dibujaaspa(etiquetaspa)
    dibujaDibujo(Cuadrodibujo)
  Wend
  Dec application.busy
......
La funcioón dibujaDibujo(), se encarga de ir cambiando el dibujo de un control picturebox, segun el valor de un contador:

Private Sub dibujaDibujo(dibuj As PictureBox)
  contadorDibujo += 2
  Select Case contadorDibujo
    Case 1 To 4
      dibuj.Picture = Picture.Load("01.png")
      dibuj.refresh()
    Case 5 To 9
      dibuj.Picture = Picture.Load("02.png")
      dibuj.refresh()
    Case 10 To 14
      dibuj.Picture = Picture.Load("03.png")
      dibuj.refresh()
    Case 15 To 19
      dibuj.Picture = Picture.Load("04.png")
      dibuj.refresh()
    Case 20 To 24
      dibuj.Picture = Picture.Load("05.png")
      dibuj.refresh()
    Case 25 To 29
      dibuj.Picture = Picture.Load("06.png")
      dibuj.refresh()
    Case 30 To 34
      dibuj.Picture = Picture.Load("07.png")
      dibuj.refresh()
    Case 35 To 39
      dibuj.Picture = Picture.Load("08.png")
      dibuj.refresh()
    Case Else
      dibuj.Picture = Picture.Load("01.png")
      dibuj.refresh()
      contadorDibujo = 0
  End Select
End


Codigo fuente: codigo fuente alojado en google drive


Fuentes:
https://www.gambas-es.org/viewtopic.php?f=1&t=6256&start=20