PROGRESSBAR

cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 - 28 févr. 2004 à 08:40
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 28 févr. 2004 à 12:12
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 févr. 2004 à 12:12
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.
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
28 févr. 2004 à 08:40
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
Rejoignez-nous