Bonjour,
J'aime bien la barre de progression présentée par Tlem à l'adresse http://www.autoitscript.fr/forum/viewtopic.php?t=26 , message #9
Je souhaite l'afficher au début de mon programme durant tout le temps où celui-ci lit des fichiers textes, met les contenus dans des tableaux et affiche les valeurs de ces tableaux dans des ListView. Cela afin de faire patienter l'utilisateur.
J'ai codé de manière à ce que :
- une fenêtre d'accueil s'ouvre, contrôles cachés,
- la barre de progression s'affiche pendant la lecture des fichiers et l'installation des contenus dans les listview cachées.
Une fois ces tâches terminées, je voudrais bien sûr, que la barre de progression disparaisse et les contrôles s'affichent.
Ma fenêtre d'accueil vide de tous contrôles ainsi que la barre de progression s'affichent bien. Mais cette dernière n'en finit pas d'en finir !
Pourriez-vous me dire comment rendre la main à mon code une fois la barre de progression lancée ?
Je vous remercie de votre aide.
[R] Adapter une barre de progression à mon code
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Adapter une barre de progression à mon code
Modifié en dernier par GMH le sam. 13 févr. 2016 14:36, modifié 1 fois.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Adapter une barre de progression à mon code
Ce n'est pas possible avec le script de Tlem en l'état, les fonctions utilisées sont bloquantes (boucles For/Next...)
Pour que du code puisse s'exécuter en même temps que la "barre de progression" fonctionne, et pour pouvoir poser une condition d'arrêt, il faut le remanier
Exemple (sommaire) :
Pour que du code puisse s'exécuter en même temps que la "barre de progression" fonctionne, et pour pouvoir poser une condition d'arrêt, il faut le remanier
Exemple (sommaire) :
Code : Tout sélectionner
#include <GUIConstants.au3>
HotKeySet("{ESC}", "endscript")
$gui = GUICreate("test", 100, 100, -1, 200)
$label = GUICtrlCreateLabel( "", 10, 10, 20, 20)
GuiSetState(@SW_SHOW)
$Ca = GUICreate ( "" , 250 , 46 , -1 , 350 , $WS_POPUP,$WS_EX_TOPMOST+$WS_EX_WINDOWEDGE+$WS_EX_DLGMODALFRAME)
GUISetBkColor ( 0x000000 , $Ca )
$Da = GUICtrlCreateLabel (" Installation en cours ...", 23, -1, 250,23)
GuiCtrlCreateGraphic(-1, 1, 252,45,$SS_SUNKEN)
GUICtrlSetColor(-1, 0XFFFFFF)
GUICtrlSetColor ( $Da, 0XFFFFFF)
GUICtrlSetFont ($Da, "12" , "50" , "" , "Courrier New")
GUICtrlCreateGraphic(1, 23, 250,20)
GUICtrlSetColor(-1, 0x007F00)
GuiSetState(@SW_SHOW)
AdlibRegister("_Slider", 50)
For $i = 1 to 100
GuiCtrlSetData($label, $i)
Sleep(100)
; _getmsg()
If GuiCtrlRead($label) = 80 Then
AdlibUnRegister("_Slider")
Msgbox(0,"", "on est à 80, on ferme")
GuiDelete($Ca)
EndIf
Next
While 1
_getmsg()
Wend
Func _getmsg()
$Msg = GUIGetMsg()
If $Msg = $GUI_EVENT_CLOSE Then Exit
EndFunc
Func _Slider()
Static $newcolor, $backcolor, $m = -5, $s
Local $color = 0x050000
If $m = -5 Then $s = 1
If $m = 250 Then $s = -1
$m = $m + $s*5
If $s = 1 Then
$newcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $newcolor)
Else
$backcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $backcolor)
EndIf
EndFunc
Func endscript()
Exit
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Adapter une barre de progression à mon code
Merci Mikell. Votre code est parfait pour s'insérer dans mon programme.
- Tlem
- Site Admin
- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Adapter une barre de progression à mon code
Bonjour.
Pour info, dans le code de mikell, la fonction _Slider() peux être réduite à ceci :
En ce qui me concerne, j'avais envisagé un truc dans ce genre :
C'est grossier, mais cela permettait de réutiliser le bargraphe au cour du code en fonction des besoins. Ceci-dit tout comme l'autre code, ce bargraph est tributaire de fonction(s) bloquante(s).
Pour info, dans le code de mikell, la fonction _Slider() peux être réduite à ceci :
Code : Tout sélectionner
Func _Slider()
Static $newcolor, $backcolor, $m = -5, $s
Local $color = 0x050000
If $m = -5 Then $s = 1
If $m = 250 Then $s = -1
$m += $s * 5
$newcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $newcolor)
EndFunc
Code : Tout sélectionner
#include <GUIConstants.au3>
HotKeySet("{ESC}", "EndScript")
; Global Vars For Bargraph
Global $hbgGui = 0, $hbgTxt
AdlibRegister("WaitingBargraph", 50)
While 1
$Msg = GUIGetMsg()
If $Msg = $GUI_EVENT_CLOSE Then Exit
; Exemple code
For $i = 1 To 100
Beep(2000 + $i*5, 15)
If $i = 30 Then GUICtrlSetData($hbgTxt, " Application des paramètres")
If $i = 60 Then GUICtrlSetData($hbgTxt, " Fin de l'installation")
Sleep(100)
Next
AdlibUnRegister("WaitingBargraph")
GUIDelete($hbgGui)
MsgBox(64, "Installation ...", "Installation terminée.")
Exit
WEnd
Func WaitingBargraph()
Local $bgColor = 0x000500 ; 0x000500 = Green 0x050000 = Red
Static $bgNewcolor, $bgCount, $bgWay = 1
; Create BarGraph if not exist
If $hbgGui = 0 Then
$hbgGui = GUICreate("", 250, 46, -1, -1, $WS_POPUP, $WS_EX_TOPMOST + $WS_EX_WINDOWEDGE + $WS_EX_DLGMODALFRAME)
GUISetBkColor(0x000000, $hbgGui)
$hbgTxt = GUICtrlCreateLabel(" Installation en cours ...", 23, -1, 250, 23)
GUICtrlCreateGraphic(-1, 1, 252, 45, $SS_SUNKEN)
GUICtrlSetColor($hbgTxt, 0XFFFFFF)
GUICtrlSetColor($hbgTxt, 0XFFFFFF)
GUICtrlSetFont($hbgTxt, "12", "50", "", "Courrier New")
GUICtrlCreateGraphic(1, 23, 250, 20)
GUICtrlSetColor(-1, 0x007F00)
GUISetState(@SW_SHOW)
EndIf
$bgNewcolor += $bgColor
$ba = GUICtrlCreateLabel("", $bgCount, 25, 4, 16)
GUICtrlSetBkColor($ba, $bgNewcolor)
If $bgCount > 245 Then $bgWay = -1
If $bgCount < 0 Then $bgWay = 1
$bgCount = $bgCount + $bgWay * 5
EndFunc ;==>WaitingBargraph
Func EndScript()
Exit
EndFunc ;==>endscript
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Adapter une barre de progression à mon code
En fait on peut simplifier la fonction

Code : Tout sélectionner
Func _Slider()
Static $newcolor, $m = -5, $s
Local $color = 0x050000
If $m = -5 Then $s = 1
If $m = 250 Then $s = -1
$m += $s*5
$newcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $newcolor)
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )