Aide sur les Interfaces Graphique Utilisateurs (GUI).
periaz
Niveau 4
Messages : 89 Enregistré le : sam. 25 avr. 2009 11:52
Status :
Hors ligne
#1
Message
par periaz » jeu. 08 avr. 2010 18:23
Bonsoir,
Je commence à apprendre les GUI et j'ai un petit problème. J'ai fait quelques recherches sur la doc et le reste mais je ne trouve pas.
Lorsque je clique sur "ok", la message box apparait alors que je n'ai coché aucune radio. Je voudrais que lorsque je coche les radios, il ne se passe rien tant que je n'ai pas appuyé sur "ok". Il y a aussi un autre problème, c'est que les messages box apparraissent mais la GUI ne se ferme pas comme je lui ai demandé =S
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
_Choix()
Func _Choix()
Local $msg, $francais, $anglais, $americain, $Button_1
GUICreate("Choisissez votre Test !", 150, 140)
GUISetState(@SW_SHOW)
GUICtrlCreateLabel ("Cochez votre Test :", 32, 15)
$americain = GUICtrlCreateRadio ("Américain", 40, 40)
$anglais = GUICtrlCreateRadio ("Anglais", 40, 60)
$francais = GUICtrlCreateRadio ("Français", 40, 80)
$Button_1 = GUICtrlCreateButton("Ok", 50, 105, 60)
While 1
$msg = GUIGetMsg()
Switch $msg = $Button_1
Case $americain And BitAND(GUICtrlRead($americain), $GUI_CHECKED) = $GUI_CHECKED
_americain()
ExitLoop
Case $anglais And BitAND(GUICtrlRead($anglais), $GUI_CHECKED) = $GUI_CHECKED
_anglais()
ExitLoop
Case $francais And BitAND(GUICtrlRead($francais), $GUI_CHECKED) = $GUI_CHECKED
_francais()
ExitLoop
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
GUIDelete()
EndFunc
Func _francais()
sleep(2000)
msgbox(0, "ok", "fr")
EndFunc
Func _anglais()
sleep(2000)
msgbox(0, "ok", "en")
EndFunc
Func _americain()
sleep(2000)
msgbox(0, "ok", "us")
EndFunc
D'avance merci,
Periaz
Tlem
Site Admin
Messages : 11796 Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status :
Hors ligne
#2
Message
par Tlem » jeu. 08 avr. 2010 20:55
Je ferais ceci :
► Afficher le texte
Code : Tout sélectionner
Func _Choix()
Local $msg, $francais, $anglais, $americain, $Button_1
GUICreate("Choisissez votre Test !", 150, 140)
GUISetState(@SW_SHOW)
GUICtrlCreateLabel ("Cochez votre Test :", 32, 15)
$americain = GUICtrlCreateRadio ("Américain", 40, 40)
$anglais = GUICtrlCreateRadio ("Anglais", 40, 60)
$francais = GUICtrlCreateRadio ("Français", 40, 80)
GUICtrlSetState(-1, $GUI_CHECKED)
$Button_1 = GUICtrlCreateButton("Ok", 50, 105, 60)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $Button_1
If BitAND(GUICtrlRead($americain), $GUI_CHECKED) = $GUI_CHECKED Then _americain()
If BitAND(GUICtrlRead($anglais), $GUI_CHECKED) = $GUI_CHECKED Then _anglais()
If BitAND(GUICtrlRead($francais), $GUI_CHECKED) = $GUI_CHECKED Then _francais()
ExitLoop
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
GUIDelete()
EndFunc
et j'enlèverais les
Sleep(2000) des fonctions.
periaz
Niveau 4
Messages : 89 Enregistré le : sam. 25 avr. 2009 11:52
Status :
Hors ligne
#3
Message
par periaz » jeu. 08 avr. 2010 21:19
Extra Tlem !
Je rentrais du sport et je m'étais penché sur une fonction qui aurait pu marché mais tu as été plus vite que moi.
Je te remercie. Par contre, c'est obligé que la case français soit coché par défaut ?
Encore merci !
Periaz
Tlem
Site Admin
Messages : 11796 Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status :
Hors ligne
#4
Message
par Tlem » jeu. 08 avr. 2010 21:40
Vous pouvez choisir n'importe quel bouton radio par défaut.
Je vous conseille d'en mettre un, car sinon vous serez obligez de gérer le cas du 'aucun choix' qui rajoutera bêtement plusieurs ligne de code pour pas grand chose.
periaz
Niveau 4
Messages : 89 Enregistré le : sam. 25 avr. 2009 11:52
Status :
Hors ligne
#5
Message
par periaz » jeu. 08 avr. 2010 22:15
OkOK, je vous remercie encore.
Tlem
Site Admin
Messages : 11796 Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status :
Hors ligne
#6
Message
par Tlem » jeu. 08 avr. 2010 22:38
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.