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

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Azir
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 13 août 2014 14:32
Status : Hors ligne

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

#1

Message 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 !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#2

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Azir
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 13 août 2014 14:32
Status : Hors ligne

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

#3

Message 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 :)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#4

Message 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:
Modifié en dernier par orax le dim. 17 août 2014 13:08, modifié 1 fois.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Azir
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 13 août 2014 14:32
Status : Hors ligne

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

#5

Message 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 ^^
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#6

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre