Page 1 sur 1
[R] Plusieurs GUICreate dans le meme script
Posté : ven. 26 juin 2009 03:55
par sscssc
Salut, voila je veux faire une page setting qui créerais une nouveau Gui mon problemme c'est que quand je mes un nouveau GUICreate dans le script le programme ne répond plus.
Pour mon premier test je les mit dans une fonction que j'ais ensuite placer dans mon premier switch mais se ne marche pas
pour mon deuxième test j'ai placer tout le script directement dans le switch le résulta est le même
peut-être faudrait-il que je ferme mon tout premier GUICreate avant d'ouvrir le seconds mais je ne ces comment faire :/
merci
Re: [..] Plusieurs GUICreate dans le meme script
Posté : ven. 26 juin 2009 05:58
par TaPuZ
[TRADUCTION]
Salut.
Je voudrais faire une page setting pour créer une nouvelle Gui.
Mon problème est que quand je mets un nouveau GUICreate dans le script le programme ne répond plus.
Pour mon premier test, je l'ai mis dans une fonction que j'ai ensuite placée dans mon premier switch, mais cela ne fonctionne pas.
Pour mon deuxième test, j'ai placé tout le script directement dans le switch : Le résultat est le même.
Peut-être faudrait-il que je ferme mon tout premier GUICreate avant d'ouvrir le second, mais je ne sais comment faire :/
Je remercie par avance toute réponse pertinente.
[/TRADUCTION]
Salut. Après un petit débug de ta question, la turbidité persiste.
Pour ton premier test, tu dis avoir placé une fonction dans un switch. Je ne suis pas sûr de comprendre.
Est-ce l'appel de la fonction qui réside dans le switch, ou la fonction elle-même??? (Auquel cas, tout deviendrait transparent, à l'instar d'une eau glauque volée dans un lagon paradisiaque...).
Bref, laisse nous tout ou partie de code, qu'on puisse jeter un oeil dessus, que je puisse te dire que j'en sais rien, et qu'un pro du site puisse résoudre tout cela.
Re: [..] Plusieurs GUICreate dans le meme script
Posté : ven. 26 juin 2009 06:47
par sscssc
1.
Code : Tout sélectionner
$MainGui = GUICreate("test", 520, 323, 303, 141)
$Setting = GUICtrlCreateButton("Setting", 400, 240, 113, 33, $WS_GROUP)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Setting
[color=#FF0000]setting()[/color]
EndSwitch
Wend
[color=#FF0000]Func setting()
$SettingGui = GUICreate("Setting", 229, 296, 471, 185)
$Label1 = GUICtrlCreateLabel("test", 8, 48, 139, 17)
$Input1 = GUICtrlCreateInput("", 152, 48, 49, 21)
while 1
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $SOK
IniWrite("config.ini", "test", "test", $Input1)
EndSwitch
Wend
EndFunc[/color]
2.
Code : Tout sélectionner
$MainGui = GUICreate("test", 520, 323, 303, 141)
$Setting = GUICtrlCreateButton("Setting", 400, 240, 113, 33, $WS_GROUP)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Setting
[color=#FF0000] $SettingGui = GUICreate("Setting", 229, 296, 471, 185)
$Label1 = GUICtrlCreateLabel("test", 8, 48, 139, 17)
$Input1 = GUICtrlCreateInput("", 152, 48, 49, 21)
while 1
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $SOK
IniWrite("config.ini", "test", "test", $Input1)
EndSwitch
Wend
EndSwitch
Wend[/color]
plus... compréhensible?
Re: [..] Plusieurs GUICreate dans le meme script
Posté : ven. 26 juin 2009 07:39
par SagePourpre
Je ne comprends pas vraiment Guigetmsg étant donnée que je m'en suis vite désintéressé
au profit de ceci :
Premièrement, au début de ton script (après les include) ajoute cette ligne
Ensuite, après chaque contrôle (bouton, checkbox, etc)
tu peux ajouter ceci :
En faisant cela, tu associes un événement à une fonction.
P.s. : Il est important de noter qu'en utilisant ceci
guigetmsg ne fonctionnera plus (puisque qu'il est remplacé au profit de GUISetOnEvent() et GUICtrlSetOnEvent()
Je met à ta disposition cet exemple ci-dessous parfaitement fonctionnel. (Si tu utilises Koda pour créer une gui, c'est toujours
ce procédé qui est utilisé plutôt que guigetmsg.
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Global $_setting
Opt("GUIOnEventMode", 1)
$MainGui = GUICreate("test", 520, 323, 303, 141)
$Setting = GUICtrlCreateButton("Setting", 400, 240, 113, 33, $WS_GROUP)
GUICtrlSetOnEvent($Setting,"setting")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetState(@SW_SHOW)
while 1
Sleep(200)
WEnd
Func setting()
$_setting = GUICreate("Setting", 220, 323, 303, 141)
GUISetOnEvent($GUI_EVENT_CLOSE,"close")
GUISetState(@SW_SHOW)
EndFunc
Func _exit()
Exit
EndFunc
Func close()
GUIDelete($_setting)
EndFunc
Re: [..] Plusieurs GUICreate dans le meme script
Posté : ven. 26 juin 2009 07:46
par Tlem
Comme le dit SagePourpre, le mode événementiel présente parfois une bonne alternative à des codes faisant appel à plusieurs GUI.
Cela dit, pour votre cas, je dirais tout simplement :
Vous partez d'une boucle
While/Wend de votre première GUI puis de cette boucle, vous allez dans une seconde boucle
While/Wend.
Le problème, c'est que sur cette deuxième GUI vous vous retrouvez 'prisonnier' de la seconde boucle ...
Donc puisque cette boucle est appelée dans une autre, il faut la gérer autrement.
Et dans ce cas le
Case $GUI_EVENT_CLOSE ne doit pas quitter par
Exit (sinon le script se ferme) mais par
ExitLoop. Idem pour le
Case $SOK, une fois l'action réalisée (
IniWrite), il faut sortir de cette boucle
While/Wend par un
ExitLoop.
Si vous placez le code de votre deuxième GUI dans une fonction, vous devez utilisez la commande
Return en lieu et place de
ExitLoop.

Re: [R] Plusieurs GUICreate dans le meme script
Posté : sam. 27 juin 2009 21:18
par sscssc
sais bon tout marche
Merci