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 ! :D

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 progressbar
Global $boolClean = 0 ;Next est selectionné. il sera à 1 pour prev.

Global $hProgress = GUICtrlGetHandle($Progress1)

;Tableau pour contenir nos fichier a defiler
Local $aToZap[11]

;remplissage du tableau
For $j = 0 To 10
   $aToZap[$j] = "Fichier Numero " & $j
Next




While 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
   EndSwitch
WEnd


Func _Coche($iD_Controle)
   Return BitAND(GUICtrlRead($iD_Controle), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_Coche


Func _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 :D
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 !