Simplemente añade un control 'Timer', establece el 'tiempo de espera' entre cambio de imágenes (el valor de la propiedad 'interval', refiere milisegundos). Deja el control timer desactivado, (Enabled=FALSE) y actívalo cuando cargas una carpeta dada.
Comentarios: En el filelistbox, deberías filtrar para que contenga solo tipos de imágenes que puedes leer... (extensiones, jpg, tif, gif, bmp)...
El 'aleatorio' deja mucho que desear... es muy fácil que salgan imágenes repetidas constantemente. Hay que tomar la lista y barajarla tan pronto como se establece la ruta (evento pathchange)...
private Lista() as integer
private NumFiles as integer
private Actual as integer
private sub Archivos_pathchange
dim k as integer
numfiles = archivos.listcount
redim lista(0 to numfiles-1)
for k= 0 to numfiles-1
lista(k) = k
next
call Barajar
end sub
private sub Barajar
dim k as integer, j as innteger, ix as integer
for k= numfiles-1 to 1 step -1
ix = Int( k * Rnd )
j = lista(k)
lista(k) = lista(ix)
lista(ix) = j
next
Actual = 0
end sub
private function NextImg as integer
NextImg = Actual
Actual = (Actual+1)
if (Actual = numfiles) then call barajar
end function
Y para completar el código... hay que rehacer lo que has puesto:
private Ruta as string
Private Sub Form_Load()
Ruta = (App.Path & "\imagenes\")
//archivos.pattern = tu decides que tipo de imágenes quieres...
archivos.Path = ruta
timer1.Interval = 3000
timer1.enabled = true
End Sub
Private Sub Timer1_timer()
set Image1.Picture = LoadPicture(ruta & archivos.List(lista(NextImg)))
End Sub
y listo... tarea completa. ahora es de verdad aleatorio y una imagen nunca se repetirá antes de haber salido todas, las demás.