ho fatto una prova... effettivamente con un piccolo artificio si riesce a fare quello che vuoi.
ma non con la progressbar standard, ovvero quella dei CommonControls. devi creartela da solo.
ho preparato un piccolo esempio, e se ti va di provarlo, metti in un form nuovo:
- 1 PictureBox
- 1 ListView
- 1 Imagelist
- 1 Timer
lascia tutti i nomi di default.
dopo di che nel codice del form metti queste righe:
codice:
Public NumeroFiles As Integer
Private Sub Form_Load()
Randomize
NumeroFiles = 50
Dim itmx As ListItem
Dim K As Integer
Timer1.Interval = 500
Timer1.Enabled = True
Picture1.AutoRedraw = True
Picture1.Visible = False
ImageList1.ListImages.Add , , Picture1.Image
ListView1.View = lvwReport
ListView1.HideSelection = False
ListView1.FullRowSelect = True
ListView1.ColumnHeaders.Add , , "ID", 0
ListView1.ColumnHeaders.Add , , "Nome File", Picture1.ScaleWidth * 2
ListView1.ColumnHeaders.Add , , "Scaricato", Picture1.ScaleWidth
For K = 1 To NumeroFiles
Set itmx = ListView1.ListItems.Add(, , K)
itmx.SubItems(1) = "File N. " & K
itmx.SubItems(2) = " "
Next
End Sub
Private Sub Timer1_Timer()
Dim Completi As Integer
Dim ValPrec As String
Dim Stp As Integer
Dim BarW As Integer
Dim X As Integer
Dim K As Integer
Set ListView1.SmallIcons = Nothing
ImageList1.ListImages.Clear
For K = 1 To NumeroFiles
Stp = 1 + Int(Rnd * 5)
ValPrec = ListView1.ListItems(K).Tag
If Val(ValPrec) < 100 Then
BarW = Val(ValPrec) + Stp
ListView1.ListItems(K).Tag = BarW
X = (Picture1.ScaleWidth * BarW) / 100
Picture1.Cls
Picture1.BackColor = RGB(200, 200, 200)
Picture1.Line (0, 0)-(X, Picture1.ScaleHeight), vbRed, BF
ImageList1.ListImages.Add , , Picture1.Image
Else
Picture1.BackColor = vbGreen
ImageList1.ListImages.Add , , Picture1.Image
ListView1.ListItems(K).Tag = 100
End If
DoEvents
Next
Set ListView1.SmallIcons = ImageList1
Completi = 0
For K = 1 To NumeroFiles
ListView1.ListItems(K).ListSubItems(2).ReportIcon = K
Completi = Completi + IIf(ListView1.ListItems(K).Tag = 100, 1, 0)
If Completi = NumeroFiles Then
Timer1.Enabled = False
MsgBox "Downloads completati!"
End If
DoEvents
Next
End Sub
ovviamente l'avanzamento delle barre si basa su dei valori casuali... ma penso che con qualche aggiustamento possa riuscire ad adattarlo alle tue esigenze...
volendo, potresti anche rendere piu "raffinata" la ProgressBar aggiungendo la percentuale di avanzamento, etc...
Boolean