Page 1 sur 1
Griser le Contenu d'une GUI
Posté : lun. 30 janv. 2017 17:23
par Nicoloquinte
Bonjour , j'aimerai griser un partie des boutons et autres trucs de ma Gui avec le fameux
Mai la , Je me heurte a un problème , j'ai essayé la boucle For avec les noms de mes Champs a l’intérieur , mais ça ne marche pas (et je crois comprendre pourquoi) J'ai aussi essayé l’histoire de les cacher mais c'est pas super beau ...
y-aurait-il un moyen de mettre les contrôles dans un groupe et griser ce groupe
merci d'avance
Re: Griser le Contenu d'une GUI
Posté : mar. 31 janv. 2017 11:49
par jguinch
Il faut mettre les ID des contrôles dans un tableau et faire une boucle comme tu l'as fait.
Montre-nous ce que tu as fait
Re: Griser le Contenu d'une GUI
Posté : mar. 31 janv. 2017 13:56
par mikell
Si les controles ont été créés bien à la suite tu peux aussi essayer ça
Code : Tout sélectionner
For $i = $bouton1 to $bouton10
GUICtrlSetState($i, $GUI_DISABLE)
Next
Mais le tableau reste quand même une solution plus propre (même si en pratique ça fait la même chose)
Re: Griser le Contenu d'une GUI
Posté : mar. 31 janv. 2017 18:43
par Nicoloquinte
Mes noms sont vraiment spécifique , moi j'ai fait ça ,
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>Local $Arr[5] = ["$Button1","$Button2","$Button3","$Button4","$Button5"]$Form2 = GUICreate("Form1", 163, 293, 1021, 392)$Button1 = GUICtrlCreateButton("Button1", 32, 24, 75, 25)$Button2 = GUICtrlCreateButton("Button2", 32, 72, 75, 25)$Button3 = GUICtrlCreateButton("Button3", 32, 120, 75, 25)$Button4 = GUICtrlCreateButton("Button4", 32, 168, 75, 25)$Button5 = GUICtrlCreateButton("Button5", 32, 216, 75, 25)GUISetState(@SW_SHOW)For $i = 0 To 4 GUICtrlSetState($Arr[$i], $GUI_DISABLE)NextWhile 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitchWEnd
Mais , ça ne grise pas grand chose
Re: Griser le Contenu d'une GUI
Posté : mar. 31 janv. 2017 19:41
par mikell
Alors ...
1) $Button1 = id de controle
, mais "$Button1" = string (à cause des guillemets)
donc l'array devrait plutôt ressembler à ça
Local $Arr[5] = [$Button1,$Button2,$Button3,$Button4,$Button5]
2) c'est beaucoup mieux si l'array est déclarée
après la création des boutons
Re: Griser le Contenu d'une GUI
Posté : mar. 31 janv. 2017 20:57
par A2Energie
Et si tu essayais plutot comme ca :
(Plus simple selon moi).
Local $Arr[6][5] = [[Ubound($Arr)-1] _
, ["Button1", 32, 24, 75, 25] _
, ["Button2", 32, 72, 75, 25] _
, ["Button3", 32, 120, 75, 25] _
, ["Button4", 32, 168, 75, 25] _
, ["Button5", 32, 216, 75, 25] _
]$Form2 = GUICreate("Form1", 163, 293, 1021, 392)For $i =1 To $Arr[0][0] Assign($Arr[$i][0], GUICtrlCreateButton($Arr[$i][0], $Arr[$i][1], $Arr[$i][2], $Arr[$i][3], $Arr[$i][4]))NextGUISetState(@SW_SHOW)For $i =1 To $Arr[0][0] GUICtrlSetState(Eval($Arr[$i][0]), $GUI_DISABLE) Sleep(1000)NextWhile 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitchWEnd
Re: Griser le Contenu d'une GUI
Posté : mer. 01 févr. 2017 13:48
par mikell
Plus simple selon moi
Question de point de vue
ça marche... mais personnellement je déconseille l'usage
systématique de Assign/Eval
Re: Griser le Contenu d'une GUI
Posté : mer. 01 févr. 2017 14:53
par jguinch
Je dirais même plus mon cher Mikell: mieux vaut éviter l'utilisation de Assign
Re: Griser le Contenu d'une GUI
Posté : mer. 01 févr. 2017 19:48
par Nicoloquinte
Ah oui J'avais oublié qu'on pouvais déclarer les variables quand on voulais Mercis Mikell , toujours aussi Pro
Mais pour la solution d'A2Energie , Elle me paraît très usine a gaz
....
Merci beaucoup a vous tous
Re: Griser le Contenu d'une GUI
Posté : mer. 01 févr. 2017 21:53
par mikell
jguinch a écrit :Je dirais même plus mon cher Mikell: mieux vaut éviter l'utilisation de Assign
Bien entendu
Mais considérant que
1) si Autoit le propose c'est que c'est faisable,
2) effectivement ça peut marcher,
3) l'utilisateur est raisonnablement adulte et s'il a envie de se faire un script casse-g... c'est son problème,
4) maintenant je suis vert et plus orange donc dorénavant et jusqu'à désormais inclus je modère mes propos
,
Je me contente d'émettre une suggestion basée sur un avis personnel avec les réserves d'usage