[R] Problème fermeture GUi séparément.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Problème fermeture GUi séparément.

#1

Message par Ks10 »

Bonsoir a tous

J'ai un problème avec mes GUI. J'ai une GUI principale, un bouton qui me permet d'ouvrir une autre GUI et un autre bouton qui ouvre une 3ième GUI.
Si je clique sur le bouton 1 il ouvre ma GUI. Cette GUI possède un bouton "quitter". Si je clique dessus il ferme tout le programme car j'ai mit Exit. Mais si je met Guidelete($magui), il détruit la GUI mais je ne peut pas la réouvrir, en dirait que le programme plante.
Et avec GuiSetState alors ? PAREIL :(

Voici la structure de mon code :

Code : Tout sélectionner

Global $Form1 = GUICreate("******************", 491, 243, 290, 258)
Global $MenuItem1 = GUICtrlCreateMenu("Fichier")
Global $MenuItem2 = GUICtrlCreateMenu("A propos...")
Global $MenuItem3 = GUICtrlCreateMenuItem("bouton1", $MenuItem1)
Global $MenuItem4 = GUICtrlCreateMenuItem("bouton2", $MenuItem1)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg

                    Case $MenuItem3
                $Form2 = GUICreate("GUI2", 809, 523, 132, 105)


                               $Button2 = GUICtrlCreateButton("Quitter", 408, 488, 131, 25)
                GUISetState(@SW_SHOW)
                #EndRegion ### END Koda GUI section ###



While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg

    Case $Button1
                    ACTION

    Case $button2
              EXIT, GUIDELETE($Form2), GuiSetState(@SW_SHOW) ;tester le problème persiste.

 EndSwitch
WEnd

       Case $MenuItem4

               If FileExists("monfichier") Then ; C'est une condition dans mon programme, si le fichier existe il ouvre la gui.
               $Form3 = GUICreate("*********", 809, 523, 132, 105)
               $Button3 = GUICtrlCreateButton("Modifier ", 272, 488, 131, 25)
           $Button4 = GUICtrlCreateButton("Quitter", 408, 488, 131, 25)
                GUISetState(@SW_SHOW)
                #EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg


        Case $Button4
            Exit

EndSwitch
WEnd


            ; Fin chargement interface
        Else
            MsgBox(64, "Informations", "Erreur")
        EndIf



 EndSwitch
WEnd
 

Donc voila, avec cette structure, un "EXIT", "GUIDELETE($form2 ou 3)", "GuiSetState(@SW_SHOW)" ne fonctionne pas.
Il ferme a gui mais impossible de la réouvrir.
J'ai fait une recherche et je suis tomber sur le mode OnEvent.
Je suis tomber sur un petit bout de code, celui-la :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)

$parent1 = GUICreate("Parent1")
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetState(@SW_SHOW)
$parent2 = GUICreate("Parent2")
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetState(@SW_SHOW)
$parent3 = GUICreate("Parent3")
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetState(@SW_SHOW)

While 1
    Sleep(10)
WEnd

Func SpecialEvents()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_CLOSE
        If @GUI_WinHandle =  $parent1 Then Exit
        If @GUI_WinHandle =  $parent2 Then GuiDelete( $parent2)
        If @GUI_WinHandle =  $parent3 Then GuiDelete( $parent3)
  EndSelect
EndFunc  


MERCI MIKELL ^^

Mais quand j'essaye de l'adapter à mon programme cela ne fonctionne pas.
Je suis encore amateur, la structuration de mes programmes sont encore en mode cochon lol je suis la pour m'améliorer donc tous les conseils sont bon à prendre.

Je vous remercie d'avance pour les éventuelles réponse que vous pourriez m'apporter.
Modifié en dernier par Ks10 le jeu. 27 juin 2013 18:31, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème fermeture GUi séparément.

#2

Message par mikell »

Tu peux avoir l'équivalent en utilisant GUIGetMsg() avec paramètre (voir explications dans l'aide) , exemple
► Afficher le texte
Mais franchement le oneventmode c'est mieux, une fois que tu as compris le principe c'est à la fois plus sûr, plus rapide et infiniment moins chiant ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Maurice
Niveau 3
Niveau 3
Messages : 37
Enregistré le : jeu. 01 nov. 2012 18:20
Localisation : Une région à bulles (pas de l'eau)
Status : Hors ligne

Re: [..] Problème fermeture GUi séparément.

#3

Message par Maurice »

Hello

EXIT termine le script. Essaie EXITLOOP qui te fait sortir de ta boucle uniquement.
Puis c'est vrai que les WHILE 1 imbriqués c'est pas cool.

Tu as aussi la possibilité de créer des GUIs indépendants dans des scripts à part.
1 GUI = 1 script, ensuite tu fermes ce que tu veux quand tu veux
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Problème fermeture GUi séparément.

#4

Message par Ks10 »

Maurice a écrit :Hello

EXIT termine le script. Essaie EXITLOOP qui te fait sortir de ta boucle uniquement.
Puis c'est vrai que les WHILE 1 imbriqués c'est pas cool.

Tu as aussi la possibilité de créer des GUIs indépendants dans des scripts à part.
1 GUI = 1 script, ensuite tu fermes ce que tu veux quand tu veux
Exitloop ne fonctionne pas également x)
J'avait penser à sa aussi, faire des scripts à part. Mais faire un script à part reviendrais à compiler un .exe supplémentaire non ? Ou sinon on peut appeler un script sans qu'il soit compiler et je précise sans utiliser INCLUDE x) qui oblige ensuite à appelez une fonction et non un script directement.

Mikell : Je regarde l'aide ce soir, je suis au taf ^^ Mais je prend quand même le maximum de possibilité :) (merci maurice :p )
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème fermeture GUi séparément.

#5

Message par mikell »

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Problème fermeture GUi séparément.

#6

Message par Sea »

Sinon je me permet de mettre ce tuto que j'avais fait y'a fort longtemps ^^

http://www.dailymotion.com/video/xf3kqc ... cttHsEi5po
(il y a des petites erreurs je sais qu'on dis une GUI par exemple mais bon le plus important c'est à dire la création de plusieurs GUI est correct ^^)

et voici le code source final http://pastebin.com/cpDvruzt
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Problème fermeture GUi séparément.

#7

Message par Ks10 »

Hier je n'est pas eu le temps de me pointer sur le pc.

Je test vos solutions dès ce soir et dès que j'ai un résultat positif et que j'arrive à m'adapter facilement je vous tien au jus :)

Merci à tous !

EDIT : Soucis corriger. Merci :)
Répondre