Page 1 sur 1
Barre de progression 2D ?
Posté : ven. 23 août 2024 13:33
par ltrautoit
Bonjour,
Pour un traitement avec une boucle imbriquée importante (On va dire de l'ordre de 10 000 lignes*10 000 lignes), je souhaiterais mettre en place un système de visualisation de la progression du traitement.
Pour moi, l'idéal serait une barre de progression 2D. Je n'ai rien trouvé qui me convienne sur le forum français, anglais ou en demandant à Google.
Auriez-vous des idées, pistes, exemples qui pourraient me mettre sur la voie ? Ou des solutions de contournement ?
Merci d'avance.
Re: Barre de progression 2D ?
Posté : ven. 23 août 2024 14:30
par jl56
Bonjour,
Rapidement je verrais 2 barres de progression
1 pour la boucle en cours et l'autre pour les boucles à traiter.
on vois ça dans des outils ce copies ou transfert de fichier
1 barre pour la copie du fichier en cours et l'autre pour l'ensemble des fichiers
#include <GUIConstantsEx.au3>#include <ProgressConstants.au3>#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)Global $Progress1 = GUICtrlCreateProgress(76, 66, 326, 34)Global $Progress2 = GUICtrlCreateProgress(76, 120, 326, 34)Local $idButton = GUICtrlCreateButton("Start", 75, 170, 70, 20)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###Local $iWait = 3 ; Attend 20 ms pour le prochain pas de la progressionWhile 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $idButton For $i = 1 To 100 For $j = 1 To 100 GUICtrlSetData($Progress2, $j) Sleep($iWait) Next Sleep(1000) GUICtrlSetData($Progress2, 0) GUICtrlSetData($Progress1, $i) Next EndSwitchWEnd
Cordialement,
Jean-Luc
Re: Barre de progression 2D ?
Posté : ven. 23 août 2024 23:19
par walkson
Bonjour,
Je reprends l'idée de jl56 mais l'avancement de la barre, je le mets dans la fonction AdlibRegister("MyAdLibFunc",250), ce qui évite de bloquer le programme dans une boucle
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
Global Const $PBST_NORMAL = 0x0001;vert
Global Const $PBST_ERROR = 0x0002;rouge
Global Const $PBST_PAUSED = 0x0003;jaune
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $Progress1 = GUICtrlCreateProgress(76, 66, 326, 34)
Global $Progress2 = GUICtrlCreateProgress(76, 120, 326, 34)
GUICtrlSendMsg(-1, $PBM_SETSTATE, $PBST_PAUSED, 0); couleur jaune
Local $idButton = GUICtrlCreateButton("Start", 75, 170, 70, 20)
Local $adButton = GUICtrlCreateButton("Arret", 75, 200, 70, 20)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $i = 0
Global $j = 0
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $idButton
$i = 0
$j = 0
AdlibRegister("MyAdLibFunc",250);peut être AdlibRegister("MyAdLibFunc",500) ou autre
Case $adButton
AdlibUnRegister("MyAdLibFunc")
EndSwitch
WEnd
Func MyAdLibFunc()
If $i > 100 Then $i = 0
$i += 3 ;à adapter à votre boucle, pour 10 000 lignes ce devrait être 0.01
$j += 1
GUICtrlSetData($Progress1, $i)
GUICtrlSetData($Progress2, $j)
If $j = 100 Then AdlibUnRegister("MyAdLibFunc")
EndFunc
Dans AdlibRegister("MyAdLibFunc",250), les 250 sont en ms, ce peut être plus rapide ou plus lent
Re: Barre de progression 2D ?
Posté : ven. 23 août 2024 23:53
par walkson
Et en pseudo barre de progression, j'avais ça il y a longtemps
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Color.au3>
Local $aColor[3] = [255, 50, 0]
Local $nColor = _ColorSetRGB($aColor)
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 360, 131, 192, 124)
Global $Button1 = GUICtrlCreateButton("Button1", 40, 8, 81, 25)
Global $Input2 = GUICtrlCreateInput("", 32, 80, 300, 22,-1,BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
Global $Input1 = GUICtrlCreateInput("", 32, 80, 1, 21)
GUICtrlSetBkColor(-1, $nColor)
Global $Label1 = GUICtrlCreateLabel("Faible" & @CRLF & "|", 32, 50, 50, 30)
GUICtrlSetFont(-1, 8, 800)
Global $Label2 = GUICtrlCreateLabel("Moyen" & @CRLF & "|", 168, 50, 50, 30,$SS_CENTER)
GUICtrlSetFont(-1, 8, 800)
Global $Label3 = GUICtrlCreateLabel("Bon" & @CRLF & "|", 282, 50, 50, 30,$SS_RIGHT)
GUICtrlSetFont(-1, 8, 800)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
For $i = 5 To 300
Sleep(30)
$aColor[0] = 255 - ($i/2)
$aColor[2] = 255 - ($i)
$aColor[1] = 50 + ($i/2)
If $i > 255 Then $aColor[0] = 0
If $i > 255 Then $aColor[2] = 0
;If $i > 150 Then $aColor[1] = 100 + ($i/2)
$nColor = _ColorSetRGB($aColor)
GUICtrlSetPos($Input1, 32, 80, $i, 21)
GUICtrlSetBkColor($Input1, $nColor)
Next
EndSwitch
WEnd
Re: Barre de progression 2D ?
Posté : lun. 26 août 2024 14:08
par ltrautoit
Merci à vous tous. Je n'avais pas tilté que les barres de progression pouvaient avoir un Id. Je vais étudier ca (J'avais trouvé un contournement à base de TrayTip et de progreesbar). Passage en résolu.