Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version : 3.2.12.1
Author : 20100
Utilisation d'une ProgressBar avec label pourcentage.
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
;===========================================================================================================
; VAR = URL DU FICHIER /// VAR2 = NOM DU FICHIER SUR LE DISQUE
$var= "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
$var2= "test.exe"
;===========================================================================================================
_GUI_Main() ; Lance le GUI principal de l'application
;===========================================================================================================
; Description : Graphical User Interfaces (GUI) principal de l'application
; Syntaxe : _GUI_Main()
; Parametere : Aucun
; Return : Aucun
;===========================================================================================================
Func _GUI_Main()
; Création de la Fenetre principale en fond blanc
Global $main_GUI = GUICreate("Test ProgressBar", 640, 280, -1, -1)
GUISetBkColor(0xFFFFFF)
; Initialise les élements utilisés (boutton, label, image ...), par defaut sur le boutton est en statut visible.
_GUI_progressbar("INIT")
GUISetState()
Local $msg
While 1
$msg = GUIGetMsg()
Select
; Evenement de fermeture de la fenetre
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Evenement de click sur le bouton "Lancer Traitement"
Case $msg = $button_traitement
_simulation_traitement()
EndSelect
WEnd
GUIDelete()
Exit
EndFunc ;==>_MainGUI
;===========================================================================================================
;===========================================================================================================
; Description : Graphical User Interfaces (GUI) associé à la progressbar
; Syntaxe : _GUI_progressbar($action)
; Parametere : $action (String)
; - INIT = Initialise les éléments GUI associé à la progressbar
; - HIDE = Cache les éléments GUI associé à la progressbar
; - SHOW = Affiche les éléments GUI associé à la progressbar
; Return : Aucun
;===========================================================================================================
Func _GUI_progressbar($action)
Switch $action
Case "INIT"
Global $button_traitement = GUICtrlCreateButton("Lancer Traitement", 215, 30, 210, 30)
Global $img_trait = GuiCtrlCreatePic("trait.jpg", 0, 90, 640,1)
Global $label_progressbar_traitement = GUICtrlCreateLabel("", 105, 120, 150, 20)
Global $label_progressbar_traitement2 = GUICtrlCreateLabel("", 105, 160, 150, 20)
Global $label_pourcentage_traitement = GUICtrlCreateLabel("(100%)", 482, 120)
Global $progressbar_traitement = GUICtrlCreateProgress(100, 138, 420, 20)
GUICtrlSetFont($label_progressbar_traitement, 8.5, 400, 4) ; Change font & souligne label
GUICtrlSetFont($label_pourcentage_traitement, 8.5, 400, 0) ; Change font & souligne label
_GUI_progressbar("HIDE") ; Cache tout les elements sauf $button_traitement
Case "HIDE"
GUICtrlSetState($img_trait, $GUI_HIDE)
GUICtrlSetState($label_progressbar_traitement, $GUI_HIDE)
GUICtrlSetState($label_pourcentage_traitement, $GUI_HIDE)
GUICtrlSetState($progressbar_traitement, $GUI_HIDE)
Case "SHOW"
GUICtrlSetState($img_trait, $GUI_SHOW)
GUICtrlSetState($label_progressbar_traitement, $GUI_SHOW)
GUICtrlSetState($label_pourcentage_traitement, $GUI_SHOW)
GUICtrlSetState($progressbar_traitement, $GUI_SHOW)
EndSwitch
EndFunc
;===========================================================================================================
; Description : Simultation d'un traitement long dont on souhaite suivre la progression avec progressbar
;===========================================================================================================
Func _simulation_traitement()
$var3 = InetGetSize($var)
; Initialisation de la progressbar pour suivre la simulation
GUICtrlSetState($button_traitement, $GUI_DISABLE) ; Evite de lancer deux fois le traitement par double click
GUICtrlSetData($label_progressbar_traitement, "Traitement en cours ...") ; Changement texte label
_MAJ_progressbar($progressbar_traitement, $label_pourcentage_traitement, 0) ; Mise à zéro de la progressbar
_GUI_progressbar("SHOW") ; Affichage de la progressbar et label associé
; Lancement de la Simulation
InetGet($var, $var2, 1, 1)
While @InetGetActive
GUICtrlSetData($label_progressbar_traitement2, @InetGetBytesRead&" sur "&$var3&" Bytes")
$indice_progressbar = Round( ((@InetGetBytesRead/$var3) * (100)), 0)
_MAJ_progressbar($progressbar_traitement, $label_pourcentage_traitement, $indice_progressbar)
sleep(50)
Wend
; Fin de la simulation
GUICtrlSetData($label_progressbar_traitement, "Traitement terminé.")
GUICtrlSetData($button_traitement, "Re-Lancer le Traitement")
GUICtrlSetState($button_traitement, $GUI_ENABLE)
_MAJ_progressbar($progressbar_traitement, $label_pourcentage_traitement, 100)
EndFunc
;===========================================================================================================
; Description : Mise à jour de la progressbar et de son label associé par la valeur passé en paramètre
; Syntaxe : _MAJ_progressbar($id_progressbar, $id_label_pourcentage, $valeur)
; Parametere : $id_progressbar = Id de la progressbar
; $id_label_pourcentage = Id du label pourcentage associé à la progressbar
; $valeur = Entier à saisir dans la progressbar et le label pourcentage
; Return : None
;===========================================================================================================
Func _MAJ_progressbar($id_progressbar, $id_label_pourcentage, $valeur)
GUICtrlSetData($id_progressbar, $valeur)
GUICtrlSetData($id_label_pourcentage, "("&$valeur&"%)")
EndFunc
;===========================================================================================================