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 !
[..] Insérer un progressbar dans une GUI déjà existante
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.
-
- Niveau 1
- Messages : 9
- Enregistré le : ven. 04 août 2017 14:07
- Status : Hors ligne
- TomAijerrie
- Niveau 5
- Messages : 192
- Enregistré le : lun. 02 juin 2014 09:55
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Insérer un progressbar dans une GUI déjà existante
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. ?
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
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
#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
Re: [..] Insérer un progressbar dans une GUI déjà existante
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.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
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
-
- Niveau 1
- Messages : 9
- Enregistré le : ven. 04 août 2017 14:07
- Status : Hors ligne
Re: [R] Insérer un progressbar dans une GUI déjà existante
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 !
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 !