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.
Barre de progression 2D ?
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.
- jl56
- Niveau 7
- Messages : 415
- Enregistré le : mer. 24 oct. 2007 22:42
- Localisation : 56000
- Status : Hors ligne
Re: Barre de progression 2D ?
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
Cordialement,
Jean-Luc
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 progression
While 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
EndSwitch
WEnd
#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 progression
While 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
EndSwitch
WEnd
Cordialement,
Jean-Luc
- walkson
- Modérateur
- Messages : 1028
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Barre de progression 2D ?
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
Dans AdlibRegister("MyAdLibFunc",250), les 250 sont en ms, ce peut être plus rapide ou plus lent
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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- walkson
- Modérateur
- Messages : 1028
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Barre de progression 2D ?
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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: Barre de progression 2D ?
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.