Page 1 sur 1
[..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 11:09
par EricF
Bonjour,
Je souhaite ajouter une fenêtre fille ouverte depuis un menu. Ca marche, mais je me pose une question.
J'ai mis le GUICreate() dans le suite correspondant au menu.
Code : Tout sélectionner
Switch $nMsg
Case $GUI_EVENT_CLOSE
Case $MenuItem ;Menu A propos
$dlgAbout = GUICreate("About", 324, 199, 189, 135)
GUISetIcon("", -1)
$dlgAbout_GroupBox1 = GUICtrlCreateGroup("", 8, 8, 305, 153)
$dlgAbout_Label1 = GUICtrlCreateLabel("Nom du produit : ", 16, 24, 80, 17)
[...]
$dlgAbout_BtnClose = GUICtrlCreateButton("&OK", 124, 168, 75, 25, 0)
GUISetState(@SW_SHOW)
Case $x
xxxxxx
EndSwitch
Faut-il définir les actions de la fenêtre fille danbs le switch existant (comme Case $x), ou créer un switch à l'intérieur du Case $MenuItem ? Notamment la gestion de la fermeture de la fenêtre fille.
Re: Actions fenêtre fille
Posté : dim. 29 juil. 2012 11:25
par TT22
Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 11:34
par EricF
Oh, merci, le monde est sauvé

Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 11:41
par TT22
EricF a écrit :Faut-il définir les actions de la fenêtre fille dans le switch existant (comme Case $x)
Personnellement, c'est ce que je ferais, mais ça va bloquer ton autre GUI pendant ce temps.
Sinon, tu peux créer ta GUI fille dès le début du script, mais ne l'afficher que lorsqu'on le demande.
Comme ça tu met toutes les actions dans le switch principal et les deux GUI peuvent fonctionner en même temps

Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 11:55
par EricF
En mettant le code de la GUI dans une fonction que j'appelle dans le Case du menu ?
Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 12:05
par TT22
Non, je pensais plus à un truc comme ça :
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
$GUI = GUICreate("GUI Parent",500,500)
$Menu = GUICtrlCreateMenu("Menu")
$Afficher = GUICtrlCreateMenuItem("Afficher",$Menu)
$Cacher = GUICtrlCreateMenuItem("Cacher",$Menu)
GUISetState(@SW_SHOW)
$GUI_ENFANT = GUICreate("GUI Enfant",126,156,-146,-20,-1,$WS_EX_TOOLWINDOW+$WS_EX_MDICHILD,$GUI)
$Button = GUICtrlCreateButton("Appuez ici !",10,10,106,136)
GUISetState(@SW_HIDE)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Afficher
GUISetState(@SW_SHOW,$GUI_ENFANT)
Case $Cacher
GUISetState(@SW_HIDE,$GUI_ENFANT)
Case $Button
MsgBox(0,"Info","Bravo, tu as appuyé !")
EndSwitch
WEnd
Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 12:17
par EricF
ok. On peut gérer indépendamment le $GUI_EVENT_CLOSE de chaque fenêtre ?
et pour info, quel intérêt de mettre la GUI dans une fonction comme dans le code suivant ?
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
Example()
Func Example()
Local $menu1, $n1, $n2, $msg, $menustate, $menutext
GUICreate("My GUICtrlRead") ; will create a dialog box that when displayed is centered
$menu1 = GUICtrlCreateMenu("File")
$n1 = GUICtrlCreateList("", 10, 10, -1, 100)
GUICtrlSetData(-1, "item1|item2|item3", "item2")
$n2 = GUICtrlCreateButton("Read", 10, 110, 50)
GUICtrlSetState(-1, $GUI_FOCUS) ; the focus is on this button
GUISetState() ; will display an empty dialog box
; Run the GUI until the dialog is closed
Do
$msg = GUIGetMsg()
If $msg = $n2 Then
MsgBox(0, "Selected listbox entry", GUICtrlRead($n1)) ; display the selected listbox entry
$menustate = GUICtrlRead($menu1) ; return the state of the menu item
$menutext = GUICtrlRead($menu1, 1) ; return the text of the menu item
MsgBox(0, "State and text of the menuitem", "state:" & $menustate & @LF & "text:" & $menutext)
EndIf
Until $msg = $GUI_EVENT_CLOSE
EndFunc ;==>Example
Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 16:55
par mikell
Indispensable lecture :
http://www.autoitscript.com/wiki/Managing_Multiple_GUIs
Sinon faire une fonction permet essentiellement de clarifier le script
Une remarque :
EricF a écrit :Oh, merci, le monde est sauvé

TT22 a pris la peine de te prévenir
Mais puisque le fait de respecter les règles du forum te parait dérisoire, ton prochain topic où tu manqueras à ces règles ira à la benne direct et sans avertissement
Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 17:30
par EricF
Merci, je vais regarder ça
mikell a écrit :Une remarque :
EricF a écrit :Oh, merci, le monde est sauvé

TT22 a pris la peine de te prévenir
Mais puisque le fait de respecter les règles du forum te parait dérisoire, ton prochain topic où tu manqueras à ces règles ira à la benne direct et sans avertissement
Oui, c'est sûr que deux points oubliés dans le titre vont changer énormément. Et ce n'est pas déjà le cas ? lol
Re: [..] Actions fenêtre fille
Posté : dim. 29 juil. 2012 21:20
par Tlem
EricF a écrit :Oui, c'est sûr que deux points oubliés dans le titre vont changer énormément.
Lorsque vous vous êtes inscrit sur le forum, vous avez acceptez les règles. La présentation d'un message selon un dispositif etabli en fait partie. Si ces règles ne vous conviennent plus, libre à vous de ne plus écrire dans notre forum.
Re: [..] Actions fenêtre fille
Posté : lun. 06 août 2012 12:59
par Uranium
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form = GUICreate("GUI Mère", 374, 260, 0, 0)
$Button2 = GUICtrlCreateButton("TEST", 104, 112, 113, 41)
GUISetState(@SW_SHOW)
$Form2 = GUICreate("GUI Fille", 374, 260, 0, 400)
$Button1 = GUICtrlCreateButton("TEST", 104, 112, 113, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[1]
Case $Form
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
MsgBox(0,"","Hop je ferme GUI Mère et GUI Fille !")
Exit
Case $Button2
MsgBox(0,'','je suis appelé de la GUI Mère !')
EndSwitch
Case $Form2
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE,$Form2)
MsgBox(0,'','Hop la GUI Fille est caché !')
Case $Button1
MsgBox(0,'','je suis appelé de la GUI Fille !')
EndSwitch
EndSwitch
WEnd