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
GUICtrlSetState($Nom,$GUI_DISABLE)
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 ... :mrgreen: y-aurait-il un moyen de mettre les contrôles dans un groupe et griser ce groupe :mrgreen:

merci d'avance :mrgreen:

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)
Next


While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit

   EndSwitch
WEnd
Mais , ça ne grise pas grand chose :mrgreen:

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

:mrgreen:

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]))
Next
GUISetState(@SW_SHOW)
For $i =1 To $Arr[0][0]
    GUICtrlSetState(Eval($Arr[$i][0]), $GUI_DISABLE)
    Sleep(1000)
Next
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

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 :mrgreen:
ç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 :mrgreen:
Mais pour la solution d'A2Energie , Elle me paraît très usine a gaz :mrgreen: ....

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 :mrgreen:
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 Image ,
Je me contente d'émettre une suggestion basée sur un avis personnel avec les réserves d'usage
Image