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.busyLa funcioón dibujaDibujo(), se encarga de ir cambiando el dibujo de un control picturebox, segun el valor de un contador:
While prsBatch.state = prsBatch.running
Wait 0.1
dibujapuntitos(etiqueta)
dibujaaspa(etiquetaspa)
dibujaDibujo(Cuadrodibujo)
Wend
Dec application.busy
......
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