Page 1 sur 1
[..] Insérer un progressbar dans une GUI déjà existante
Posté : mar. 03 oct. 2017 16:24
par DrSilverman
Bonjour
Je souhaiterai insérer une progressbar dans une GUI déjà existante et pouvoir utiliser les butons de ma GUI pour changer du texte en même temps que ma progressbar
ou alors
une progressbar dans une gui a part mais qui reste au premier plan pendant que j'utilise les boutons de ma GUI principale pour changer du texte
si qqun a une idée, je suis preneur !
Re: [..] Insérer un progressbar dans une GUI déjà existante
Posté : mar. 03 oct. 2017 19:28
par TomAijerrie
Bonjour,
La deuxième solution est faisable, cependant, je pense que c'est mieux d'essayer la première.
Il me manques quelques informations pour t'aider.
La GUI déjà existante est elle créée par l'un de tes script ?
Si oui, peux-tu fournir la partie de ton script qui la crée et l'affiche ?
Peut-on ajouter la progress bar dans ce script, ou il faut que ce soit dans un autre script ?
Si non, de quelle fenêtre s'agit-il ?
Peux-tu fournir un screen, le nom du programme, ses fonctionnalités, etc. ?
Re: [..] Insérer un progressbar dans une GUI déjà existante
Posté : mar. 03 oct. 2017 22:08
par Numeric
Salut j'ai rapidement bricolé un truc juste pour que tu t'en inspires...excuse moi pour l'algorithme un peu imparfait. Je n'ai pas eu le temps...
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <ProgressConstants.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>#include <SendMessage.au3>#Region ### START Koda GUI section ### Form=Global $Form1 = GUICreate("Form1", 342, 438, 192, 124)Global $ButtonMove = GUICtrlCreateButton("<Move>", 120, 304, 75, 25)Global $ButtonInitialiser = GUICtrlCreateButton("<Reinitialiser>", 120, 389, 75, 25)Global $Group1 = GUICtrlCreateGroup("Options", 24, 40, 281, 105)Global $RadioCallNext = GUICtrlCreateRadio("Next", 48, 72, 233, 17)GUICtrlSetState(-1, $GUI_CHECKED)Global $RadioCallPrev = GUICtrlCreateRadio("Prev", 48, 104, 225, 17)GUICtrlCreateGroup("", -99, -99, 1, 1)Global $Progress1 = GUICtrlCreateProgress(24, 200, 286, 17)Global $LabelStatut = GUICtrlCreateLabel(" ", 0, 248, 342, 17, $SS_CENTER, $WS_EX_STATICEDGE)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ####cs Remarque
;GUICtrlSetData($Progress1, 30) est aussi utilisé pour marquer un ctrl progress.
_SendMessage (pour le handle du ctrl) GUICtrlSendMsg et GuictrlSetData pour (l' ID du ctrl)
j'ai expressement utilisees ces fonctions pour enrichir l'exemple.
#ce
;variable pour nous permetre de nettoyer convenablement l'affichage du statut et la progression du progressbarGlobal $boolClean = 0 ;Next est selectionné. il sera à 1 pour prev.Global $hProgress = GUICtrlGetHandle($Progress1);Tableau pour contenir nos fichier a defilerLocal $aToZap[11];remplissage du tableauFor $j = 0 To 10 $aToZap[$j] = "Fichier Numero " & $jNextWhile 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Form1 Case $Form1 Case $Form1 Case $Form1 Case $ButtonInitialiser GUICtrlSetData($LabelStatut,'') GUICtrlSendMsg($Progress1,$PBM_SETPOS,0,0) ;_SendMessage($hProgress, $PBM_SETPOS, 0, 0, 0, "wparam", "int") Case $ButtonMove Local $vSens If _Coche
($RadioCallNext) Then $vSens = "+" ElseIf _Coche
($RadioCallPrev) Then $vSens = "-" EndIf _ProgressAssist
($hProgress,$vSens,10) Case $RadioCallNext If $boolClean Then ; on initialise. GUICtrlSetData($LabelStatut,'') EndIf ;on enregistre l'etat actuel selection. $boolClean = 0 Case $RadioCallPrev If Not $boolClean Then GUICtrlSetData($LabelStatut,'') EndIf $boolClean = 1 Case $LabelStatut EndSwitchWEndFunc _Coche
($iD_Controle) Return BitAND(GUICtrlRead($iD_Controle), $GUI_CHECKED) = $GUI_CHECKEDEndFunc ;==>_CocheFunc _ProgressAssist
($hProgress,$vSens = "+", $iMax = 10) ;$iMax est choisie en fonction de la taille du tableau $aToZap ;On Cherche le niveau de progression actuel. Local $iProgress = _SendMessage($hProgress, $PBM_GETPOS) Local $iCount = (1*100)/$iMax ;pour le calcul Select Case $vSens = "+" $iProgress += $iCount Case $vSens = "-" $iProgress -= $iCount EndSelect If $iProgress >= 100 Then $iProgress = 100 ;on ne fait rien si la barre est toute pleine. If $iProgress < 0 Then $iProgress = 0 ;Affichage et defilement GUICtrlSetData($LabelStatut,$aToZap[$iProgress/10] & " [niveau progression = " & $iProgress &" %]") _SendMessage($hProgress, $PBM_SETPOS, $iProgress,0, 0, "int", "lparam") ;GUICtrlSendMsg($Progress1,$PBM_SETPOS,$iProgress,0)EndFunc
Re: [..] Insérer un progressbar dans une GUI déjà existante
Posté : mar. 03 oct. 2017 22:30
par Numeric
DrSilverman a écrit : ↑mar. 03 oct. 2017 16:24
Bonjour
Je souhaiterai insérer une progressbar dans une GUI déjà existante et pouvoir utiliser les butons de ma GUI pour changer du texte en même temps que ma progressbar
Si la GUI est d'un autre script ou ... alors il serait plus adapté de créer ta propre GUI et son contrôle progressbar. Tu pourras ensuite en deux étapes réagir à l’événement voulu.
1ere étape : tu intercepte les messages de notification envoyés par les buttons.
2eme étape tu mets à jour ton contrôle progressbar en fonction des messages interceptés..
Re: [R] Insérer un progressbar dans une GUI déjà existante
Posté : mer. 04 oct. 2017 09:41
par DrSilverman
La GUI a bien été crée par l'un de mes scripts
Pour la partie du script, ce n'est plus la peine, Numeric a résolu le problème, merci a lui
il fallait que ce soit dans le meme script
et poour le screen ce n'est plus la peine
merci de m'avoir répondu, Numeric et TomAijerrie !