Page 1 sur 1

[R] Progressbar

Posté : jeu. 06 mars 2014 17:49
par 91300
Bonjour à vous, je viens vous voir pour un petit coup de main:

sur un logiciel, je voudrais crée une progressbar qui progresse en fonction du nom de Ko télécharger par logiciel je m'explique:

Actuellement, le code ressemble à ceci:

Code : Tout sélectionner

 $url = "http://oldtimer.geekstogo.com/OTL.exe"
$fichier = @DesktopDir & "\Outils de Desinfection\OTL.exe"
    $BarreProgression = GUICreate("OTL : téléchargement en cours", 200, 80, -1, -1, $WS_POPUPWINDOW);$WS_CAPTION+$WS_CLIPSIBLINGS)
$Progress = GUICtrlCreateProgress(10, 30, 180, 20, $PBS_MARQUEE)
GUICtrlCreateLabel("Téléchargement en cours...", 10, 4, 520, 100)
GUICtrlSetFont(-1, 10, 800, 0, "comic sans MS")
GUICtrlSetColor(-1, 0x0000FF) ;couleur du texte
GUICtrlSendMsg($Progress, 0x0400 + 10, 1, Number(30)) ; on envoie la ProgressBar
GUISetState(@SW_SHOW)
$myDL = InetGet($url, $fichier, 1, 1)


La progressbar tourne mais, elle ne tourne pas par pourcentage.
Or, en sachant que ce logiciel pèse 588Ko, je voudrais que ma progressbar avance en fonction de cela genre a 1% c'est quand le logiciel est a 5ko, 10% quand il est a 50 etc (ce sont des chiffres au hasard pour illustré bien sur)

j'avais pensé à quelque chose du genre :

Code : Tout sélectionner

$NbKeys = 588ko
        Local $Pourcent1 = $poids / 100 ; Calcul du 1%
        For $i = 0 To $poids
    $BarreProgression = GUICreate("OTL : téléchargement en cours", 200, 80, -1, -1, $WS_POPUPWINDOW);$WS_CAPTION+$WS_CLIPSIBLINGS)
    GUICtrlSetData($pbLoading, (($i + $Pourcent1) / $poids ) * 100) ; Affichage suivant le nombre $i (pourcentage du total $poids )
            Sleep(25) ; Attente indispensable pour affichage correct de la barre de progression.
$Progress = GUICtrlCreateProgress(10, 30, 180, 20, $PBS_MARQUEE)
Avec une fonction pour démarrer et stopper la barre:

Code : Tout sélectionner

Func _DemBarre()
    GUICtrlSetStyle($pbLoading, 0x040A)
    _SendMessage(GUICtrlGetHandle($pbLoading), 0x040A, True, $Vitesse)
EndFunc   ;==>_DemBarre

Func _FinBarre()
    GUICtrlSetData($pbLoading, 0)
    _GUICtrlStatusBar_SetText($StatusBar1, "", 0)
EndFunc   ;==>_FinBarre
Mais, je ne trouve pas comment mettre ceci en place, certains ont-ils des idées ?

Merci d'avance :)

Re: [..] Progressbar

Posté : jeu. 06 mars 2014 19:46
par mikell
Pour ce que tu veux faire je te conseille très vivement la fonction _InetGetX de matwachich, et aussi de faire une recherche sur le forum pour voir les différentes variantes de scripts avec progressbar qui utilisent cette fonction

Re: [..] Progressbar

Posté : jeu. 06 mars 2014 21:33
par 91300
Bonsoir,

Merci de la réponse :)

si je peux abuser encore de ton temps (ou celui d'un autre) 5 minutes, j'ai une petite question que je n'arrive pas à résoudre malgré de nombreuse recherches :

Partons du principe que j'ai coché le téléchargement de OTM (checkbox2) et de OTL (checkbox 37)
je voudrais que a la fin de tous mes télécharger, mon msgbox me dise "les logiciels OTM et otl ont été télécharger avec succès"

en gros, faut que je puisse lire les cases coché dans un msgbox à la fin de tous les télécharger, avez vous une idée de comment faire...?
je ne trouve pas :roll: :(

Merci encore du temps que vous accordez à chaque personne et à l'aide apporté ;)

+++

Re: [..] Progressbar

Posté : ven. 07 mars 2014 09:21
par aulus
Peut-être :

Code : Tout sélectionner

If _IsChecked($OTMcheck) and  _IsChecked($otlcheck)Then msgbox(0,"","Les logiciels OTM et otl ont été téléchargés avec succès")

Re: [..] Progressbar

Posté : ven. 07 mars 2014 09:25
par mikell
Ou ce genre de truc avec une boucle

Code : Tout sélectionner

If _IsChecked($cb) Then $message &= GUICtrlRead($cb, 1) & @crlf

Re: [..] Progressbar

Posté : ven. 07 mars 2014 10:28
par 91300
Bonjour,

Merci de vos réponses, hélas, je ne crois pas que cela fonctionne comme je le souhaite:
en effet en reprenant le code de aulus, il faut que je fasse cette ligne pour chacune des 37 checkbox...
en fait ce qu'il me faut c'est genre une variable qui lise les checkbox coché mais, je ne sais même pas si c'est faisable !!! :(

Merci à vous en tout cas :)

Re: [..] Progressbar

Posté : ven. 07 mars 2014 13:02
par aulus
Peut-être avec un tableau de variables et une boucle comme le suggère Mikell :

Code : Tout sélectionner

Dim $check[37]
...
Local $check[0] =   GUICtrlCreateCheckbox("...")
Local $check[1] =   GUICtrlCreateCheckbox("...")
Local $check[2] =   GUICtrlCreateCheckbox("...")
...
Local $check[36] =   GUICtrlCreateCheckbox("...")

...

Local $message = "Logiciels téléchargés : " & @CRLF & @CRLF
For $i = 0 TO 36
If _IsChecked($check[$i]) Then $message = $message & GUICtrlRead($check[$i], 1) & @CRLF
Next
...
MsgBox(0,"",$message)
 

Re: [..] Progressbar

Posté : ven. 07 mars 2014 13:41
par mikell
Bien que ce ne soit pas vraiment recommandé, si les checkbox ont été créées bien à la suite sans création de controle intercalée on peut aussi tenter une boucle sur les ids

Code : Tout sélectionner

For $i = $checkbox1 To $checkbox37
   If _IsChecked($i) Then $message &= GUICtrlRead($i, 1) & @CRLF
Next

Re: [..] Progressbar

Posté : ven. 07 mars 2014 16:25
par 91300
Merci, je vais essayer de mettre vos morceau de code en place, merci beaucoup à vous encore :)