Page 1 sur 1

[R] Griser des éléments d'une GUI en fonction d'un checkbox

Posté : lun. 14 févr. 2011 10:37
par pierrotm777
Bonjour,

Je souhaite rendre inutilisable, un combo, un checkbox si un autre checkbox est actif !

Voici mon code:
► Afficher le texte
Mais les éléments restent toujours grisés

Re: [..] Griser des éléments d'une GUI en fonction d'un chec

Posté : lun. 14 févr. 2011 12:36
par zeshrek
1/ cette question a déjà été traitée récemment
2/ le script que tu nous donne est incomplet, il manque entre autres la boucle qui attend qu'il se passe quelquechose dedans. du coup il se ferme a peine ouvert
3/ dans ton exemple tu ne nous dis pas ce qu'il faudrait (des)activer en fonction de quel checkbox

Du coup, heureusement que tu as respecté les regles de présentation des messages sinon, je t'envoyais bouller...

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 633, 454, 192, 114)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 312, 48, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 312, 176, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 312, 288, 97, 17)
$Combo1 = GUICtrlCreateCombo("Combo", 40, 48, 145, 25)
GUICtrlSetData(-1, "Choix 1|Choix 2|Choix 3")
$Group1 = GUICtrlCreateGroup("Group1", 40, 144, 185, 105)
$Radio1 = GUICtrlCreateRadio("Radio1", 56, 168, 113, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 56, 192, 113, 17)
$Radio3 = GUICtrlCreateRadio("Radio3", 56, 216, 113, 17)
$Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 48, 296, 97, 17)
GUISetState(@SW_SHOW)

;~ début du script on désactive les controles soumis a activation

GUICtrlSetState($Combo1, $GUI_DISABLE)

GUICtrlSetState($Radio1, $GUI_DISABLE)
GUICtrlSetState($Radio2, $GUI_DISABLE)
GUICtrlSetState($Radio3, $GUI_DISABLE)

GUICtrlSetState($Checkbox4, $GUI_DISABLE)




While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Checkbox1
            If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
                GUICtrlSetState($Combo1, $GUI_ENABLE)
            Else
                GUICtrlSetState($Combo1, $GUI_DISABLE)
            EndIf
        Case $Checkbox2
            If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
                GUICtrlSetState($Radio1, $GUI_ENABLE)
                GUICtrlSetState($Radio2, $GUI_ENABLE)
                GUICtrlSetState($Radio3, $GUI_ENABLE)
            Else
                GUICtrlSetState($Radio1, $GUI_DISABLE)
                GUICtrlSetState($Radio2, $GUI_DISABLE)
                GUICtrlSetState($Radio3, $GUI_DISABLE)
            EndIf
        Case $Checkbox3
            If GUICtrlRead($Checkbox3) = $GUI_CHECKED Then
                GUICtrlSetState($Checkbox4, $GUI_ENABLE)
            Else
                GUICtrlSetState($Checkbox4, $GUI_DISABLE)
            EndIf
    EndSwitch
WEnd

Re: [..] Griser des éléments d'une GUI en fonction d'un chec

Posté : lun. 14 févr. 2011 13:06
par pierrotm777
Merci tout de même :D .

Mon erreur était de ne pas faire de test dans la boucle elle même.
:mrgreen:

Mercit encore