[R] Fermé une Gui parmis d'autre.

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

[R] Fermé une Gui parmis d'autre.

#1

Message par locos974 »

Bonjour,

J'ai crée un petit tools pour un amis.
Et mon problème est qu'on peux ouvrir plusieurs Gui, grâce à 2 bouton ( chacun ouvre 1 Gui ) et donc avec la 'X' croix rouge en haut a droit ( $GUI_EVENT_CLOSE ) pour fermer que celle-ci est non les autres.

Mon script se compose d'une fenêtre principale avec les deux boutons.
Et les autres se sont des Func avec une GuiCreate et une Boucle.

Merci d'avance. Cordialement Locos974.
Modifié en dernier par locos974 le mar. 23 oct. 2012 21:54, modifié 1 fois.
Cordialement Locos974.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#2

Message par FireFox »

Bonsoir,
Je ne comprend pas trop ton problème, si tu veux que les autres se ferment avec la fenêtre principale, tu as juste à les cacher lorsque tu caches la principale.

Cdlt, FireFox.
Modifié en dernier par FireFox le sam. 21 sept. 2013 15:55, 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: [..] Fermé une Gui parmis d'autre.

#3

Message par mikell »

Hum je vois (sujet traité quelques dizaines de fois)
Tu veux pouvoir fermer les gui séparément, c'est ça ?
Faut utiliser le paramètre de GuiGetMsg et faire ta boucle comme ça, mais attention, pas d'autre boucle While ailleurs ake sinon ça va merder et il faudra alors passer en mode OnEvent
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#4

Message par TommyDDR »

Si vous débutez, oubliez GUIGetMsg(), comme l'a dit Mikell, utilisez le mode OnEvent.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#5

Message par mikell »

Exemple équivalent en mode OnEvent
► Afficher le texte
@TommyDDR
Le problème quand on débute c'est que tous les exemples du fichier d'aide dans la rubrique "Gui Management" sont construits avec des boucles GuiGetMsg, donc vaut ptêt mieux apprendre à maîtriser ça avant de s'attaquer au mode OnEvent (même si celui-ci est effectivement bien meilleur)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#6

Message par locos974 »

Merci de toute vos réponse !
mikell a écrit :Hum je vois (sujet traité quelques dizaines de fois)
Tu veux pouvoir fermer les gui séparément, c'est ça ?
Faut utiliser le paramètre de GuiGetMsg et faire ta boucle comme ça, mais attention, pas d'autre boucle While ailleurs ake sinon ça va merder et il faudra alors passer en mode OnEvent
Ceci je l'avais déjà interprété mais cela provoque un 'bug'. Je ne peux plus appuyer sur un bouton ou quitter la fenêtre,.. En gros le script est considéré sur PAUSE.
► Afficher le texte
Voilà mon code source. Sauf que j'aimerais que si j'appuie sur la croix rouge de la Gui NPCTemplate, sa supprime celle ci. Et idem pour l'autre.
Je vais essayer pour le OnEvent.
Cordialement Locos974.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#7

Message par FireFox »

Hm... ca marche bien chez moi, ça doit venir de tes fonctions NCP qui doivent contenir un loop.

Edit : Je pense que tu veux que le script se ferme quand tu fermes la fenêtre?
Dans ce cas ajoute un Exit après ton GUIDelete.

Cdlt, FireFox.
Modifié en dernier par FireFox le sam. 21 sept. 2013 15:56, 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: [..] Fermé une Gui parmis d'autre.

#8

Message par mikell »

Question
Si les 2 nouvelles gui contiennent des controles (boutons...) , où est-ce que ces controles sont gérés ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#9

Message par locos974 »

Dans une Func soit :
Func NPCTemplate()
Toute la gui..

While 1
Switch $nMsg
$nMsg = GuiGetMsg()

Case $botton1
...

EndSwitch
Wend
Endfunc
Cordialement Locos974.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#10

Message par FireFox »

Il faut que tu regroupes tes While dans le principal en utilisant le code fourni par mikell au post #2.

Cdlt, FireFox.
Modifié en dernier par FireFox le sam. 21 sept. 2013 15:55, 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: [..] Fermé une Gui parmis d'autre.

#11

Message par mikell »

Qu'est-ce que ça peut être gonflant les gens qui répondent sans avoir lu le post ... :evil:
mikell a écrit :Faut utiliser le paramètre de GuiGetMsg et faire ta boucle comme ça, mais attention, pas d'autre boucle While ailleurs ake sinon ça va merder
Donc
1) tu dois gérer tous les controles de toutes les gui dans une seule boucle While
2) pour faire ça tu utilises GuiGetMsg(1) en suivant le modèle de mon 1er post que tu as lu en travers et trop vite

Edit
@FireFox, c'est pas à toi que je dis ça :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#12

Message par locos974 »

Voilà :

Code : Tout sélectionner

While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
        Case $GUI_EVENT_CLOSE
            Switch $nMSG[1]
            Case $NPCTemplate
                GuiDelete($NPCTemplate)
            Case $NPCRA
                GuiDelete($NPCRA)
            Case $NPCCreator
                GuiDelete($NPCCreator)
            EndSwitch
        Case $Button1
            _NPCTemplate()
        Case $Button2
            _NPCReponseAction()
        Case $Button3
            _FileCreate(@ScriptDir&"\Config.ini")
            IniWrite(@ScriptDir&"\Config.ini","DataBase","NPC_T","npc_template")
            IniWrite(@ScriptDir&"\Config.ini","DataBase","NPC_Q","npc_questions")
            IniWrite(@ScriptDir&"\Config.ini","DataBase","NPC_RA","npc_reponses_actions")
            ShellExecute(@ScriptDir&"\Config.ini")

    EndSwitch
WEnd
Ceci est la boucle de la première Gui qui permet d'ouvrir les deux autres suivantes.
Mais une question, les autres fonctions de mes autres Gui, je l'est met aussi dans la première While ?

Fin.. Je n'est pas trop compris le système que vous voulez interprété.
Cordialement Locos974.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#13

Message par FireFox »

mikell a écrit : Edit
@FireFox, c'est pas à toi que je dis ça :mrgreen:
Au premier abord j'y ai cru :lol: mais en lisant le reste j'ai compris :wink:

Et c'est moi ou locos974 ne s'exprime pas bien car là une fois sur deux j'étais à côté de la plaque :cry:
Modifié en dernier par FireFox le sam. 21 sept. 2013 15:55, modifié 1 fois.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#14

Message par FireFox »

Bon on va récapituler...
► Afficher le texte
Tu peux aussi inverser les switchs comme l'a fait mikell dans son 2ème post.

Cdlt, FireFox.
Modifié en dernier par FireFox le sam. 21 sept. 2013 15:55, 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: [..] Fermé une Gui parmis d'autre.

#15

Message par mikell »

Oui, par exemple comme ça
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#16

Message par locos974 »

Sauf que je ne veux pas que les 3 Guis se lance toute d'un coup.
Modifié en dernier par locos974 le mar. 23 oct. 2012 21:54, modifié 1 fois.
Cordialement Locos974.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#17

Message par FireFox »

T'es pas obligé des toutes les afficher, tu les laisses à l'état par défaut qui est "HIDE" (caché) et quand tu en as besoin tu les affiches avec un GUISetState($taGUI, @SW_SHOW)

Tu peux aussi déclarer les variables des éléments contenus par la GUI + la GUI et la créer ensuite pour éviter les erreurs de variable non déclarée.

Cdlt, FireFox.
Modifié en dernier par FireFox le sam. 21 sept. 2013 15:54, modifié 1 fois.
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#18

Message par locos974 »

Pas bête l'idée de la cachée j'avais pas pensé ! :wink:
Je vais essayer sa.
Cordialement Locos974.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#19

Message par mikell »

ça marchera mais j'aime pas bien le principe de tout balancer d'un coup en gérant ensuite juste la visibilité
d3monCorp a écrit :Et c'est moi ou locos974 ne s'exprime pas bien car là une fois sur deux j'étais à côté de la plaque :cry:
Bin ça serait bien qu'il comprenne les concepts qu'on essaie de lui expliquer, parce que là j'ai l'impression confuse que ça rentre pas :(
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Fermé une Gui parmis d'autre.

#20

Message par FireFox »

mikell a écrit :ça marchera mais j'aime pas bien le principe de tout balancer d'un coup en gérant ensuite juste la visibilité
Ca n'a pas de sens si tu as besoin de te servir des fenêtres à des moments différents, car si je suis ce que tu dis, tu devras à chaque fois recréer la fenêtre et ensuite la supprimer ce qui là n'est pas top (à mon goût) !
Répondre