[R] Menu sur plusieurs fenêtres

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
lavjau
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 01 oct. 2014 09:45
Status : Hors ligne

[R] Menu sur plusieurs fenêtres

#1

Message 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
Modifié en dernier par lavjau le mer. 01 oct. 2014 17:10, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#2

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
lavjau
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 01 oct. 2014 09:45
Status : Hors ligne

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

#3

Message 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 :?:
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#4

Message par jguinch »

GUIDelete()
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
lavjau
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 01 oct. 2014 09:45
Status : Hors ligne

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

#5

Message par lavjau »

Merci ! Résolu !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#6

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Menu sur plusieurs fenêtres

#7

Message par jguinch »

Un petit lien sur la gestion des GUI multiples : https://www.autoitscript.com/wiki/Manag ... tiple_GUIs
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
lavjau
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 01 oct. 2014 09:45
Status : Hors ligne

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

#8

Message 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

 
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Menu sur plusieurs fenêtres

#9

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lavjau
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 01 oct. 2014 09:45
Status : Hors ligne

Re: [R] Menu sur plusieurs fenêtres

#10

Message 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.
Répondre