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
[R] Plusieurs GUICreate dans le meme script
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Plusieurs GUICreate dans le meme script
Modifié en dernier par sscssc le sam. 27 juin 2009 21:19, modifié 1 fois.
Re: [..] Plusieurs GUICreate dans le meme script
[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.
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.
A bientôt,
T@PµZ.
____________________________________
T@PµZ.
____________________________________
Re: [..] Plusieurs GUICreate dans le meme script
1.
2.
plus... compréhensible?
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]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]
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Plusieurs GUICreate dans le meme script
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.
au profit de ceci :
Premièrement, au début de ton script (après les include) ajoute cette ligne
Code : Tout sélectionner
Opt("GUIOnEventMode", 1)Ensuite, après chaque contrôle (bouton, checkbox, etc)
tu peux ajouter ceci :
Code : Tout sélectionner
GUICtrlSetOnEvent($Setting,"setting")P.s. : Il est important de noter qu'en utilisant ceci
Code : Tout sélectionner
Opt("GUIOnEventMode", 1)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
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Plusieurs GUICreate dans le meme script
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.
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.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [R] Plusieurs GUICreate dans le meme script
sais bon tout marche
Merci
Merci


