PROGRESSBAR

Signaler
Messages postés
1133
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20818-progressbar

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
Oui, tu as aussi cette source ( http://www.vbfrance.com/code.aspx?ID=17200 ) qui est un ocx qui reprend le concept de Programmix et qui optionnellement permet d'ajouter un texte devant le poucentage.
Messages postés
1133
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
3
Il en existe déjà quelques unes sur le site...

Personnellement, je préfère limiter la progressbar à un seul picturebox dans lequel se trouve à la fois la ligne de progression et le texte indiquant le pourcentage.

La procédure que j'utilise habituellement (voir ci-dessous), offre ainsi l'avantage de limiter les contrôles à utiliser. Elle permet également de modifier les couleurs de la ligne de progression ainsi que celle du pourcentage lorsque la ligne passe dessus.


Public Sub Progression(ByVal Valeur As Integer, ByVal Max As Integer)

Dim iVal As Integer
Dim sPourcentage As String

'Récupère la valeur de la progression
iVal = Valeur
'Si 0...
If iVal 0 Then iVal 1
'Transforme cette valeur en pourcentage
iVal = (iVal / Max) * 100
'Transforme cette valeur en chaîne
sPourcentage = Format(iVal, "###") & "%"

'Efface le contenu de la PictureBox
Me.Picture1.Cls

'Calcule l'emplacement de la chaîne (au centre de la PictureBox)
Me.Picture1.CurrentX = (Me.Picture1.ScaleWidth - Me.Picture1.TextWidth(sPourcentage)) / 2
Me.Picture1.CurrentY = (Me.Picture1.ScaleHeight - Me.Picture1.TextHeight(sPourcentage)) / 2

'Ecrit la chaîne
Me.Picture1.Print sPourcentage
'Trace une ligne pour indiquer la progression
Me.Picture1.Line (0, 0)-(iVal, Me.Picture1.ScaleHeight), vbMagenta, BF
'Redessine le tout
Me.Picture1.Refresh
'Rend la main au système
DoEvents

End Sub

Remarque, il faut définir absolument définir les propriétés suivantes de la picturebox pour que cela marche

Me.Picture1.AutoRedraw = True
Me.Picture1.ScaleWidth = 100
Me.Picture1.DrawMode = vbNotXorPen