[..] Insérer un progressbar dans une GUI déjà existante

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
DrSilverman
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 04 août 2017 13:07
Status : Hors ligne

[..] Insérer un progressbar dans une GUI déjà existante

#1

Message par DrSilverman » mar. 03 oct. 2017 15: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
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

Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 191
Enregistré le : lun. 02 juin 2014 08:55
Localisation : Lyon
Status : Hors ligne

Re: [..] Insérer un progressbar dans une GUI déjà existante

#2

Message par TomAijerrie » mar. 03 oct. 2017 18:28

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. ?

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 103
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [..] Insérer un progressbar dans une GUI déjà existante  

#3

Message par Numeric » mar. 03 oct. 2017 21:08

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
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 103
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [..] Insérer un progressbar dans une GUI déjà existante

#4

Message par Numeric » mar. 03 oct. 2017 21:30

DrSilverman a écrit :
mar. 03 oct. 2017 15: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..
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

DrSilverman
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 04 août 2017 13:07
Status : Hors ligne

Re: [R] Insérer un progressbar dans une GUI déjà existante

#5

Message par DrSilverman » mer. 04 oct. 2017 08:41

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 !

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité