Utilisation du ProgressSet
Wednesday, 22. July 2009, 08:32:00
Bien entendu, nous pourrions créer une interface graphique (à l’aide de GUICreate), dans laquelle nous insérerions un GUICtrlCreateProgress… Mais pourquoi faire complexe lorsqu’on peut faire simple ?
Je préconise alors l’utilisation d’un Progress() que l’on peut personnaliser.
Cela se fait simplement par la commande suivante :
ProgressOn("titre du progress", "texte principal", "texte secondaire", position, position, option)
Par la suite, il faut faire « afficher » cette progression. Malheureusement il n’y a pas d’autres secrets que de faire « dormir » le script, le faire patienter. Encore faut-il trouver le temps correct pour que l’utilisateur puisse s’intéresser à cette progression, sans s’endormir ou penser que celle-ci est bloquée.
Je préconise donc une utilisation d’un sleep() variant de 200ms (en dessous c’est inutile, cela parait être « un flash ») à 4000ms (4s) (au dessus c’est un peu énorme, … Et l’utilisateur ne comprendra pas le but).
En code cela donne ceci :
ProgressOn("Deploiement", "Initialisation de l'installation", "Vérification des prérequis", -1, -1, 16); Barre de progression
WinActivate("Deploiement") ; Activation barre de progression
Sleep(500) ; je dors pendant ½ seconde
Lorsque cette barre est initialisée, il faut bien entendu lui donner à manger selon les actions faites.
Certes c’est fastidieux mais c’est nécessaire afin d’avoir un beau déploiement.
Cette mise à jour se fait par ProgressSet()
La syntaxe est aussi facile que le ProgressOn() :
ProgressSet(pourcentage, "mon texte secondaire", "mon texte principal")
Nous aurons donc selon les actions une succession de mise à jour :
ProgressOn( … ) WinActivate( …) Sleep( … ) ProgressSet( … ) Sleep( … ) MON_ACTION_A_FAIRE ProgressSet( … ) Sleep( … ) MON_AUTRE_ACTION_A_FAIRE ProgressSet( … ) ; etc etc
Le pourcentage évoluera selon les actions à faire… Ou ce qu’il faut faire dans l’action (pourcentage de l’action).
Mais par la suite, il faut « tuer » ce Progress() et ça c’est via ProgressOff() (aucun argument nécessaire).
Oui mais… Et si on a des fonctions de vérifications me direz-vous ?
Bien souvent ces fonctions font un renvoi d’erreur. Et bien nous complèterons donc dans la fonction le Progress() !
Func _maFonction($arguments) $maconditiond_erreur = 1 If $arguments = $maconditiond_erreur Then ProgressSet(99,"Erreur trouvée", "ERREUR : " & @ScriptLineNumber) Sleep(3000) ProgressOff() MsgBox(0+16, "ERREUR", "Une erreur est rencontrée, sortie du déploiement") EXIT EndIf EndFunc
Simple et esthétique. Et surtout destiné à ne pas s’ennuyer dans les GUI !



How to use Quote function: