Page 1 sur 1

[R] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 10:08
par lavjau
Bonjour tout le monde !

Actuellement, je développe un programme qui me permettra l’installation automatisé de plusieurs programmes sans interaction avec l'utilisateur.
Je viens vers vous car je bloque sur la création d'un menu qui sera utilisé sur plusieurs fenêtres (2 pour le moment) GUI.

Le menu s'affiche sur la 1ère fenêtre (sûrement car je créé le menu juste après la création de ma 1ère GUI :wink: ) mais pas sur la 2ème.

Pouvez-vous m'indiquer comment organiser mon code ?

Merci ! :D
► Afficher le texte

Re: [..] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 13:43
par jguinch
Le menu n'est pas commun à chaque fenêtre.
Il te faut soit créer un menu par fenêtre, soit garder la même fenêtre en supprimant son contenu.

Re: [..] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 14:58
par lavjau
Merci de ta réponse rapide.

J'ai choisi de créer 2 menus (identiques) sur chaque fenêtre. Il faut gérer le double de variables mais ce menu ne devrait pas évoluer souvent.

Pour ma curiosité, comment efface t-on une fenêtre :?:

Re: [..] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 15:07
par jguinch
GUIDelete()

Re: [..] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 17:08
par lavjau
Merci ! Résolu !

Re: [..] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 17:31
par orax
lavjau a écrit :J'ai choisi de créer 2 menus (identiques) sur chaque fenêtre. Il faut gérer le double de variables mais ce menu ne devrait pas évoluer souvent.
Tu pourrais mettre la création du menu dans une fonction pour éviter ce problème.
► Afficher le texte

Re: [R] Menu sur plusieurs fenêtres

Posté : mer. 01 oct. 2014 20:21
par jguinch
Un petit lien sur la gestion des GUI multiples : https://www.autoitscript.com/wiki/Manag ... tiple_GUIs

Re: [..] Menu sur plusieurs fenêtres

Posté : jeu. 02 oct. 2014 18:01
par lavjau
Je vais tenter de réorganiser mon code pour mettre mes GUI's en fonction. :D

merci !

EDIT :

En réorganisant mon code (en m'aidant du code d'Orax), je me suis aperçus que mon programme se fermait automatiquement après ouverture.
Après plusieurs recherches, mon bouton "$Btn_quitter" est exécuté sans que je clic dessus et ferme le programme.

Est-ce normal ?

Code : Tout sélectionner


; ===============================================================================================================================
; Initialisation des fonctions "include" d'AutoIT
; ===============================================================================================================================
#include <MsgBoxConstants.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>

Global $menu_outils, $menu_outils_cam, $menu_aide, $menu_aide_maj, $menu_aide_note_version
Global $Btn_part, $Btn_pro, $Btn_custom, $Btn_quitter

; ===============================================================================================================================
; Création GUI
; ===============================================================================================================================

$GUI_client = _creationFenetreParticulierPro()


; ===============================================================================================================================
; PROGRAMME
; ===============================================================================================================================

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

        Case $GUI_EVENT_CLOSE
            Exit

        Case $Btn_part
            ; Activation des checkbox pour les particuliers
            GUIDelete($GUI_client)
            Sleep(300) ; Effet disparition fenêtre
            _creationFenetreChoixLogiciels()



        Case $Btn_pro
            ; Activation des checkbox pour les professionnels
            GUIDelete($GUI_client)
            Sleep(300) ; Effet disparition fenêtre
            _creationFenetreChoixLogiciels()



        Case $Btn_custom
            ; Ne sélectionne aucune checkbox - Bouton "CUSTOMS"
            GUIDelete($GUI_client)
            Sleep(300) ; Effet disparition fenêtre
            _creationFenetreChoixLogiciels()


        Case $menu_aide_maj
            MsgBox(0, '', 'essai $menu_aide_maj')

        Case $Btn_quitter
            Exit
    EndSwitch
WEnd


; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Création fenêtre "Particulier / Professionnel"
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Func _creationFenetreParticulierPro()
    $gui = GUICreate("Version", 220, 210, -1, -1)
    $Btn_part = GUICtrlCreateButton("PARTICULIER", 10, 10, 200, 50)
    GUICtrlSetFont(-1, 12, 700, 0, "MS Sans Serif")
    $Btn_pro = GUICtrlCreateButton("PROFESSIONNEL", 10, 70, 200, 50)
    GUICtrlSetFont(-1, 12, 700, 0, "MS Sans Serif")
    $Btn_custom = GUICtrlCreateButton("CUSTOM", 10, 130, 200, 50)
    GUICtrlSetFont(-1, 12, 700, 0, "MS Sans Serif")

    _creationMenu()

    GUISetState(@SW_SHOW)

    Return ($gui)
EndFunc   ;==>_creationFenetreParticulierPro

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Création Fenêtre des choix logiciels
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Func _creationFenetreChoixLogiciels()
    $gui = GUICreate("LIS - Choix des logiciels...", 560, 500, -1, -1) ; Création de la fenêtre de choix des logiciels à installer
    $Btn_quitter = GUICtrlCreateButton("Quitter", 230, 435, 90, 35)
    GUICtrlSetFont(-1, 12, 700, 0, "MS Sans Serif")
    $Btn_retour = GUICtrlCreateButton("Retour", 10, 435, 90, 35)
    GUICtrlSetFont(-1, 12, 700, 0, "MS Sans Serif")
    $Btn_installer = GUICtrlCreateButton("Installer", 450, 435, 90, 35) ; Bouton pour lancer l'installation des programmes sélectionnés
    GUICtrlSetFont(-1, 12, 700, 0, "MS Sans Serif")

    _creationMenu()

    GUISetState(@SW_SHOW)

    Return ($gui)
EndFunc   ;==>_creationFenetreChoixLogiciels

Func _creationMenu()
    $menu_outils = GUICtrlCreateMenu("Outils")
    $menu_outils_cam = GUICtrlCreateMenuItem("Tester Webcam", $menu_outils)
    $menu_aide = GUICtrlCreateMenu("?")
    $menu_aide_maj = GUICtrlCreateMenuItem("Mise à jour des programmes", $menu_aide)
    GUICtrlCreateMenuItem("- dernière MAJ : ", $menu_aide)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateMenuItem("", $menu_aide, 2)
    $menu_aide_note_version = GUICtrlCreateMenuItem("Notes de version", $menu_aide)
EndFunc   ;==>_creationMenu

 

Re: [R] Menu sur plusieurs fenêtres

Posté : jeu. 02 oct. 2014 19:07
par orax
Oui effectivement.
Dans le lien de jguinch, ils assignent une valeur de 9999 pour éviter un déclenchement intempestif.

Le problème est qu'avec mon code, la fenêtre des choix logiciels n'est pas crée au lancement du script mais à la demande. Donc une solution serait d'assigner 9999 aux variables qui n'auront pas de valeur avant la création de cette fenêtre.

Code : Tout sélectionner

Global $Btn_retour=9999, $Btn_installer=9999, $Btn_quitter=9999
Sinon en utilisant Opt("GUIOnEventMode", 1) il n'y aurait plus ce problème.
► Afficher le texte

Re: [R] Menu sur plusieurs fenêtres

Posté : ven. 03 oct. 2014 18:12
par lavjau
Je suis en train de réécrire mon code en événementiel (Opt("GUIOnEventMode", 1)) et pour le moment tout se passe bien ! 8)

D'ailleurs mon script me parait beaucoup plus lisible avec cette méthode...

Merci !
orax a écrit :Oui effectivement.
Dans le lien de jguinch, ils assignent une valeur de 9999 pour éviter un déclenchement intempestif.

Le problème est qu'avec mon code, la fenêtre des choix logiciels n'est pas crée au lancement du script mais à la demande. Donc une solution serait d'assigner 9999 aux variables qui n'auront pas de valeur avant la création de cette fenêtre.

Code : Tout sélectionner

Global $Btn_retour=9999, $Btn_installer=9999, $Btn_quitter=9999
Sinon en utilisant Opt("GUIOnEventMode", 1) il n'y aurait plus ce problème.