[R] Plusieurs GUICreate dans le meme script

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
sscssc
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 23 juin 2009 04:10
Status : Hors ligne

[R] Plusieurs GUICreate dans le meme script

#1

Message 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
Modifié en dernier par sscssc le sam. 27 juin 2009 21:19, modifié 1 fois.
TaPuZ
Niveau 4
Niveau 4
Messages : 75
Enregistré le : jeu. 14 mai 2009 17:10
Status : Hors ligne

Re: [..] Plusieurs GUICreate dans le meme script

#2

Message 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.
A bientôt,
T@PµZ.
____________________________________
sscssc
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 23 juin 2009 04:10
Status : Hors ligne

Re: [..] Plusieurs GUICreate dans le meme script

#3

Message 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?
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Plusieurs GUICreate dans le meme script

#4

Message 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

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")
En faisant cela, tu associes un événement à une fonction.






P.s. : Il est important de noter qu'en utilisant ceci

Code : Tout sélectionner

Opt("GUIOnEventMode", 1)
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
 
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Plusieurs GUICreate dans le meme script

#5

Message 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. ;)
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é".
sscssc
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 23 juin 2009 04:10
Status : Hors ligne

Re: [R] Plusieurs GUICreate dans le meme script

#6

Message par sscssc »

sais bon tout marche

Merci
Répondre