Page 1 sur 1

[..] Problème sur la gestion de bouton

Posté : ven. 15 août 2014 16:32
par Azir
Bonjour !

Je débute en GUI et plus particulièrement en Mode événementiel.
Justement j'apprends à gérer deux fenêtres avec deux boutons.
Dans la 1ère il y'a une check box quand je la coche il y'a : " Vous avez activé la checkbox 1 "
Et quand je la décoche c'est la même MsgBox qui apparait ! :(
Je voudrais qu'il y'aie "vous avez désactivé la checkbox 1" j'ai essayé de switch dans une boucle infinie en faisant un cas " case disable $Radio_2 " mais apparemment ça marche pas. Voici le code en question :

Code : Tout sélectionner

[spoiler=]#include <FuncToInclude.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1)

; Création de la GUI 1 et ses contrôles.
$GUI_1 = GUICreate("GUI N°1", 250, 150, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "FermerGUI")
$Label_1 = GUICtrlCreateLabel("Fenêtre N°1", 85, 10, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "Arial Black")
$CheckB_1 = GUICtrlCreateCheckBox("Check_1", 90, 60, 100, 20)
GUICtrlSetOnEvent($CheckB_1, "CheckBox1")
$But_1 = GUICtrlCreateButton("Masquer GUI N°1 et afficher GUI N°2", 35, 110, 180, 25)
GUICtrlSetOnEvent($But_1, "Buton1")

; Création de la GUI 2 et ses contrôles.

$GUI_2 = GUICreate("GUI N°2", 250, 150, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "FermerGUI")
$Label_2 = GUICtrlCreateLabel("Fenêtre N°2", 85, 10, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "Arial Black")
$RadioB_2 = GUICtrlCreateCheckBox("Radio_2", 90, 60, 100, 20)
GUICtrlSetOnEvent($RadioB_2, "Radio2")
$But_2 = GUICtrlCreateButton("Masquer GUI N°2 et afficher GUI N°1", 35, 110, 180, 25)
GUICtrlSetOnEvent($But_2, "Buton2")

GUISetState(@SW_SHOW, $GUI_1)
While 1
    Sleep(1000)
WEnd
[/spoiler]
Merci de vos éventuelles réponses !

Re: [..] Problème sur la gestion de bouton

Posté : ven. 15 août 2014 17:01
par jguinch
C'est quoi FuncToInclude.au3 ?
C'est cet include qui contient tes différentes fonctions ? Car dans l'état, on ne peut pas voir grand-chose.

Re: [..] Problème sur la gestion de bouton

Posté : sam. 16 août 2014 02:05
par Azir
Ah ! Désolé de ne pas l'avoir mis ^^'
Voici justement le fichier inclus ( FuncToInclude.au3 ) :

Code : Tout sélectionner

[spoiler=]Func FermerGUI()
    If @GUI_CtrlHandle = $GUI_1 Then
        MsgBox(64, "Le Handle de la fenêtre fermée.", "Vous aviez fermée la fenêtre ayant pour Handle : " & @GUI_CtrlHandle)
    ElseIf @GUI_CtrlHandle = $GUI_2 Then
        MsgBox(64, "Le Handle de la fenêtre fermée.", "Vous aviez fermée la fenêtre ayant pour Handle : " & @GUI_CtrlHandle)
    EndIf
    Exit
EndFunc

Func CheckBox1()
    MsgBox(64, "CheckBox_1 activée.", "Vous aviez activé la CheckBox 1")
EndFunc

Func Buton1()
    GUISetState(@SW_HIDE, $GUI_1)
    GUISetState(@SW_SHOW, $GUI_2)
    MsgBox(64, "GUI N°2", "Voici la GUI N°2")
EndFunc

Func Buton2()
    GUISetState(@SW_HIDE, $GUI_2)
    GUISetState(@SW_SHOW, $GUI_1)
    MsgBox(64, "GUI N°1", "Voici la GUI N°1")
EndFunc

Func Radio2()
    MsgBox(64, "Radio_2 activée.", "Vous aviez activé la Radio_2")
EndFunc
[/spoiler]


J'ai utilisé la macro car en programmation événementielle j'ai pas pu utiliser la boucle classique :)

Re: [..] Problème sur la gestion de bouton

Posté : sam. 16 août 2014 02:32
par orax
La fonction s'exécute dès qu'il y a un événement sur la CheckBox donc là on vérifie qu'elle est bien cochée.

Code : Tout sélectionner

    Func CheckBox1()
        [strike]If BitAND(GUICtrlRead($CheckB_1), $GUI_CHECKED) Then[/strike]
        If GUICtrlRead($CheckB_1) = $GUI_CHECKED Then
            MsgBox(64, "CheckBox_1 activée.", "Vous aviez activé la CheckBox 1")
        EndIf
    EndFunc
Un petit détail en passant, mets plutôt la base code dans le spoiler : [ spoiler= ][ code ]Mon code[ /code ][ /spoiler ] :wink:

Re: [..] Problème sur la gestion de bouton

Posté : dim. 17 août 2014 02:41
par Azir
Merci beaucoup. Et désolé comme je suis nouveau j'essaie de bien appliquer les règles de la présentation, mais je prendrais en compte ton conseil ! :)
Peux tu m'expliquer que veux dire le BitAND ?
Sinon, ça a bel et bien marché ! Merci ^^

Re: [..] Problème sur la gestion de bouton

Posté : dim. 17 août 2014 15:00
par orax
Ça effectue une fonction logique ET. C'est utile quand le contrôle peut avoir plusieurs états. Mais dans le cas présent je m'étais trompé, BitAND n'est pas nécessaire puisque un seul état peu être retourné à la fois.
documentation > _GUICtrlRead a écrit :For Checkbox and Radio controls only the $GUI_CHECKED (1), $GUI_UNCHECKED (4) or $GUI_INDETERMINATE (2) states are returned so the value can be used directly.
► Afficher le texteune démonstration
Si t'as des notions d'électronique les schémas sur cette page sont assez parlants : http://fr.wikiversity.org/wiki/Logique_ ... troduction