Page 1 sur 1

[Tuto] Utiliser une ProgressBar très simplement !

Posté : dim. 18 sept. 2011 13:31
par blacksoul305
Faire avancer une ProgressBar à son rythme !

Bonjour !

Aujourd'hui, je vais vous apprendre à vous, les petits novices d'Autoit, comment faire avancer une ProgressBar tranquillement et surtout très facilement !

Introduction

Cela fait bien longtemps que j'essaie de comprendre comment fonctionne la ProgressBar, j'avais beau utiliser l'aide Autoit, je ne comprenais toujours rien et l'exemple était bien trop compliqué pour moi. Aujourd'hui, je viens de demander à un ami comment il faisait. Cela m'a mis sur la voie et grâce à lui, je sais faire fonctionner une ProgressBar à mon rythme !

(/!\ Je vais vous montrer comment faire avancer une progressbars simplement, pour un tutoriel plus complets qui permet de caser une progressbar en fonction d'une action, il y a un tutoriel ici:

http://autoitscript.fr/forum/viewtopic. ... rogressbar)

A la suite de ce tutoriel se trouve un message de Tlem. Dans certaines parties de son message, vous pourrez trouver des informations concernant la structure "For, To, Next" etc...


Vous voulez tenter le faire ? Très bien, c'est parti !

Deux façons différentes:

En effet, il y a deux façons pour faire des progressbars:

[*]Les grosses progressbars
[*]Les petites progressbars

Ça paraît bête je sais ! En fait, je vais vous montrer dans un premier temps, les "grosses" progressbarrs. Ce sont celles qui sont encrées dans votre GUI. Ensuite, je vous montrerai les "petites" qui elles sont des fenêtres contenant une progressbarr. N'ayez craintes ce n'est pas bien difficile, le fonctionnement reste quasiment le même.

I) Les grosses progressbars

Donc ici, on va apprendre à faire avancer une grosse progressbar, celle que vous vouliez utiliser (j'en suis sur) en arrivant sur ce tutoriel:

Créons d'abord notre GUI:
► Afficher le texte
Je vais fonctionner par fonction. Je vais créer des fonctions que je pourrai appeler selon mes goûts. Il faut savoir que ça revient à faire la même chose.

Créons notre première fonction:
► Afficher le texte
Détaillons ma fonction:

Func/Endfunc = Début/fin de ma fonction _Progress()
$control = Vous auriez pu l'appeler autrement, ça fait plus sérieux de l'appeler comme ça voilà tout. :P Cela va dire à la fonction "Avec cette variable tu fais cela...". Il va falloir mettre la variable de notre progressbar à savoir "$Progress1".

Attaquons-nous au plus dur !

$i = Cette variable générera la progression de notre barre.

Code : Tout sélectionner

For $i = 0  To 100 Step 1
Sleep(100)
Next
Cela veut dire en fait: Tu progresseras de 0 à 100 en montant à chaque fois de 1 toutes les centièmes de secondes.
Next = Suivi d'un "For", le Next doit se trouver après.
Next veut dire "Ensuite tu fais..."
GUICtrlSetData($control,$i) = Cela va nous montrer comment progresse la barre. Vous verrez qu'elle progressera bien de 1 en 1 et qu'une seconde affichera les 10% de la barre ! magique non ? :D

Il nous reste plus qu'à ajouter dans notre code ( à la suite de "Exit") ceci:

Code : Tout sélectionner

Case $Button1
_Progress($Progress1)
On appelle notre fonction avec notre progressbar à la place de "$control"

Le code de notre fonction est donc:
► Afficher le texte
Et notre code totale est donc pour l'instant:
► Afficher le texte
II) Les petites progressbars

Vous pouvez garder la même GUI, on remplacera la fonction et vous pourrez donc voir pleinement ce qui se passe ! Mais, j'ai envie de faire une petite blague pour cette partie. On va imaginer, vous vous faites passer pour un super programmeur, et vous dites à un(e) ami(e):

"- Hé ! J'ai créé un nouveau programme ! Il pourra chercher si tu as des erreurs sur ton ordinateur !
- Ah bon ? Cool, lançons-le !"

Votre ami(e) a dit oui ? Super ! Ne perdons pas de temps alors.

Dans un premier temps, on va placer un truc pour réussir notre farce. En dessous de la création de la GUI, mettez cela:

Code : Tout sélectionner

$Erreurs = Random(100,1000,1)
Cela veut dire: Tu choisis un nombre entre 100 et 1000 mais pas le droit aux nombres décimaux ! (Le 1 à la fin veut dire qu'il prend seulement des nombres entiers)

C'est bon, on peut continuer !

Créons notre nouvelle fonction, appelons là "_Progress2".
► Afficher le texte
Détaillons ce code là:
ProgressOn("Titre","texte") = Cela fera apparaître une "petite" progressbar, elle sera comme je l'ai expliqué, dans une petite fenêtre !
For, $i, To, Step et Next = Vous connaissez, je ne ré-explique pas hein ?
Sleep(1000) On laisse le temps de regarder cette magnifique barre à notre ami(e).
ProgressOff() = Ferme notre petite progressebar.
MsgBox(type,"titre","texte") = On fait apparaître un message avec comme type une information et on affiche le nombre d'erreurs "trouvées" en utilisant "$Erreurs" qui représentait un nombre entre 100 et 1000 !

(Au cas où vous ne le saviez pas, pour placer une variable dans une MsgBox ou autre, quelque chose qui est généralement utilisé dans les cas où on veut montrer une valeur à l'utilisateur, on fait ça comme ça:

Code : Tout sélectionner

MsgBox(64,"teste","Voici ma valeur ": & $Erreurs) ;Le texte se trouve derrière ma variable donc je met "..." & $ma_variable
MsgBox(64,"teste","$Erreurs & " erreurs trouvées.") ;Le texte se trouve devant ma variable donc je met  $ma_variable & "..."
MsgBox(64,"teste","Il y a "$Erreurs & " erreurs trouvées.") ;Le texte entoure ma variable donc je met  "..." & $ma_variable & "..."
Voilà, j'ose espérer que ce tutoriel vous a aidé ! A bientôt !

Merci à:

floriande26 pour ses multiples scripts qu'il a pu me montrer concernant les progressbars
20100 pour son tutoriel complet sur les progressbars
Tlem pour ses remarques
A vous d'avoir suivi ce tutoriel !

Re: [Tutoriel] Utiliser une ProgressBar très simplement !

Posté : dim. 18 sept. 2011 16:33
par Tlem
Votre idée d'expliquer la ProgressBar est louable, ceci dit vous confondez pas mal de chose et vous partez sur des explications erronées ...
En effet, pourquoi parler de 'petites barres' et de 'grosses barres' ???
Les deux méthodes peuvent afficher la même chose.
Exemple :
► Afficher le texte
La plus grosse différence entre les deux méthodes, est que l'une ne peut être intégrée que dans une fenêtre parente, alors que l'autre génère sa propre fenêtre GUI. Après il existe encore d'autres différences, mais restons en là.

Ensuite dans la partie :
$i = C'est une variable par défaut. Vous ne pourrez pas la changer. Je ne sais pas trop ce qu'elle représente.
Là, je suis estomaqué !!
$i est une variable comme une autre et on peut la changer comme on veut (la preuve dans mon code précédent).
Elle sert tout simplement à générer la progression par l'intermédiaire de la boucle For/Next.

Votre boucle For/Next, peut être interprétée en Français comme ceci :

Code : Tout sélectionner

For $i = 0 To 100 Step 1 ;  Pour $i égal 0 à 100 par pas de 1
        ; là on utilise $i
Next    ; Suivant (reprend la boucle sur la valeur suivante)
Dans votre cas, la variable $i contiendra à chaque tour de boucle, une valeur incrémentée de 1 démarrant de 0 à 100 ce qui permet d'utiliser cette valeur pour faire progresser votre barre.
Si vous utilisez Step 5 au lieu de Step 1, alors la variable $i aura des valeurs incrémentée de 5 démarrant de 0 à 100, ce qui fera une progression par saut de 5%.

Ensuite dans votre code, vous donnez le code d'une boucle For, mais vous oubliez la commande de fin de boucle 'Next' !!!

Bon, après, je me suis arrêté, car je trouvais ce tutoriel un peut à coté de la plaque. Je ne critique pas l'idée, mais plutôt les termes et les arguments. De manière générale, si vous ne maitrisez pas un sujet, il vaut mieux s'abstenir plutôt que de passer pour un incompétent.

Re: [Tutoriel] Utiliser une ProgressBar très simplement !

Posté : dim. 18 sept. 2011 16:59
par blacksoul305
Bonjour,
En effet, pourquoi parler de 'petites barres' et de 'grosses barres' ???
Les deux méthodes peuvent afficher la même chose.
Parce que on voit le différence tout de suite. Et puis je l'explique plus loins:
En fait, je vais vous montrer dans un premier temps, les "grosses" progressbarrs. Ce sont celles qui sont encrées dans votre GUI. Ensuite, je vous montrerai les "petites" qui elles sont des fenêtres contenant une progressbarr.
$i est une variable comme une autre et on peut la changer comme on veut (la preuve dans mon code précédent).
Elle sert tout simplement à générer la progression par l'intermédiaire de la boucle For/Next.
En effet, j'étais pourtant sûr que c'était une variable appartenant à la progressbar, mais bon, maintenant je sais que c'est pas le cas ! Merci.
Dans votre cas, la variable $i contiendra à chaque tour de boucle, une valeur incrémentée de 1 démarrant de 0 à 100 ce qui permet d'utiliser cette valeur pour faire progresser votre barre.
Si vous utilisez Step 5 au lieu de Step 1, alors la variable $i aura des valeurs incrémentée de 5 démarrant de 0 à 100, ce qui fera une progression par saut de 5%.
En revanche, cela est cité dans le tutoriel:
GUICtrlSetData($control,$i) = Cela va nous montrer comment progresse la barre. Vous verrez qu'elle progressera bien de 1 en 1 et qu'une seconde affichera les 10% de la barre !
Ensuite dans votre code, vous donnez le code d'une boucle For, mais vous oubliez la commande de fin de boucle 'Next' !!!
Je ne l'ai pas oublié, je ne l'ai pas mis. J'expliquait juste ce que contenait cette partie là du code, mais il est vrai que pour éviter les erreurs, je vais le rajouter.

Mis à part la variable "$i" dont je n'étais pas sur, je pense que le tutoriel tient la route. Une personne qui le suit pourra créer et faire avancer sa progressbar comme bon lui semble. Après peut être que je paraît incompétent en ayant fait ce tutoriel, mais pour le vérifier on verra ce que les autres pensent du tuto.

Néanmoins, merci pour les explications.