Griser le Contenu d'une GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 10:57
Contact :
Status : Hors ligne

Griser le Contenu d'une GUI

#1

Message par Nicoloquinte » lun. 30 janv. 2017 17:23

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:
Nico ¤_¤

Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2469
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#2

Message par jguinch » mar. 31 janv. 2017 11:49

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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5757
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#3

Message par mikell » mar. 31 janv. 2017 13:56

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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 10:57
Contact :
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#4

Message par Nicoloquinte » mar. 31 janv. 2017 18:43

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:
Nico ¤_¤

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5757
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Griser le Contenu d'une GUI  

#5

Message par mikell » mar. 31 janv. 2017 19:41

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:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 133
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#6

Message par A2Energie » mar. 31 janv. 2017 20:57

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

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5757
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#7

Message par mikell » mer. 01 févr. 2017 13:48

Plus simple selon moi
Question de point de vue :mrgreen:
ça marche... mais personnellement je déconseille l'usage systématique de Assign/Eval
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2469
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#8

Message par jguinch » mer. 01 févr. 2017 14:53

Je dirais même plus mon cher Mikell: mieux vaut éviter l'utilisation de Assign :)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 10:57
Contact :
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#9

Message par Nicoloquinte » mer. 01 févr. 2017 19:48

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
Nico ¤_¤

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5757
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Griser le Contenu d'une GUI

#10

Message par mikell » mer. 01 févr. 2017 21:53

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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Répondre