Page 1 sur 1

[R] sous sous-menu

Posté : mer. 27 mars 2013 19:23
par aulus
Bonsoir,

Voici mon menu :

Code : Tout sélectionner

; créer menu Fichier
    $hFichier = _GUICtrlMenu_CreateMenu()
    _GUICtrlMenu_InsertMenuItem($hFichier, 0, "Ouvrir une base", $idBaseOuvrir)
    _GUICtrlMenu_InsertMenuItem($hFichier, 1, "Créer une nouvelle base", $idBaseCreer)
    _GUICtrlMenu_InsertMenuItem($hFichier, 2, "Annuler la dernière action sur la base ouverte (ajout, modification, suppression)", $idAnnuler)
    _GUICtrlMenu_EnableMenuItem($hFichier, 2, 3)
    _GUICtrlMenu_InsertMenuItem($hFichier, 3, "Quitter", $idExit)
    ; créer menu Import/Export
    $himportexport = _GUICtrlMenu_CreateMenu()
    _GUICtrlMenu_InsertMenuItem($himportexport, 0, "Index", $idImportexport)
    _GUICtrlMenu_EnableMenuItem($himportexport, 0, 3)
    ; créer menu Exercices
    $hExercices = _GUICtrlMenu_CreateMenu()
    _GUICtrlMenu_InsertMenuItem($hExercices, 0, "Noms : Numéro de Déclinaison", $NomNoDeclinaison)
    _GUICtrlMenu_EnableMenuItem($hExercices, 0, 3)
    _GUICtrlMenu_InsertMenuItem($hExercices, 1, "Noms : Traduction française", $NomSens)
    _GUICtrlMenu_EnableMenuItem($hExercices, 1, 3)
    _GUICtrlMenu_InsertMenuItem($hExercices, 2, "Noms : Traduction latine", $NomLatin)
    _GUICtrlMenu_EnableMenuItem($hExercices, 2, 3)
    _GUICtrlMenu_InsertMenuItem($hExercices, 3, "Noms : Décliner", $NomDecliner)
    _GUICtrlMenu_EnableMenuItem($hExercices, 3, 3)
    [color=#FF0000]_GUICtrlMenu_InsertMenuItem($NomDecliner, 4, "Rosa", $Rosa)
    _GUICtrlMenu_EnableMenuItem($Rosa, 4, 3)[/color]
Le sous sous-menu surligné en rouge ne s'affiche pas. Je voudrais que ce soit un sous-menu de $NomDecliner. Mon code est donc mauvais. Mais je ne trouve pas dans l'aide d'AutoIt comment créer un sous sous-menu.

Je vous remercie si vous pouvez me guider.

Re: [..] sous sous-menu

Posté : mer. 27 mars 2013 21:51
par jguinch
Salut
La fonction GUICtrlCreateMenu n'est-elle pas suffisante pour créer ton menu ?

Edit : sinon tu peux regarder cet UDF

Re: [..] sous sous-menu

Posté : mer. 27 mars 2013 21:59
par parazitenew
Comme l'a dit Gui, GUICtrlCreateMenu() le fait très bien

Code : Tout sélectionner

$MenuItem1 = GUICtrlCreateMenu("Fichier")
$MenuItem2 = GUICtrlCreateMenu("Exporter", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenuItem("AVI", $MenuItem2)

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 09:37
par aulus
Bonjour et merci à tous deux pour vos réponses.

Avec les fonctions que j'ai utilisées, je sais lancer les Func correspondants ainsi :

Code : Tout sélectionner

GUISetState()

    ; Loop until user exits
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

; Handle menu commands
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)

    #forceref $hWnd, $iMsg, $ilParam
    Switch _WinAPI_LoWord($iwParam)

        Case $idBaseCreer
            $base = FileSaveDialog( "Créer une nouvelle base.", @WindowsDir & $lexique, "Bases (*.dat)", 2)
               Case $idBaseOuvrir
                        ...
 
Comment s'y prend-on avec le code $MenuItem1 = GUICtrlCreateMenu("Fichier")
$MenuItem2 = GUICtrlCreateMenu("Exporter", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenuItem("AVI", $MenuItem2) pour lancer les Func ?

Je vous remercie.

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 10:51
par jguinch
Je ne suis pas très fort avec GUIRegisterMsg, mais tu essayer comme ça :
► Afficher le texte
Sinon, juste un petit truc avec que les modos te fassent la remarque : dans tes posts essaie de ne pas confondre la balise Code avec Quote (et tu peux utiliser une Spoiler pour les codes de plusieurs lignes).
A+

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 11:05
par aulus
Merci. J'ai mis entre

Code : Tout sélectionner

. Je vais étudier tout ça.

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 13:01
par aulus
Je ne m'en sors pas.

Dans le code suivant, quelqu'un saurait-il me dire pourquoi la MsgBox s'affiche dès le lancement du programme et se réaffiche indéfiniment, et pourquoi le clic sur la croix de la fenêtre ne la ferme pas ? Et enfin, pourquoi je n'ai pas les sous-sous-menus Naissance/Mariage/Décès dans le sous-menu Relevé :

Code : Tout sélectionner

$hFichier = GUICtrlCreateMenu("Fichier")
$hBaseOuvrir = GUICtrlCreateMenu("Ouvrir une base", $hFichier)
$hReleve = GUICtrlCreateMenu("Exploitation", $hReleve)
$hChoix = GUICtrlCreateMenu("Relevé", $hReleve)
$hNaissance = GUICtrlCreateMenuItem("Naissances", $hChoix)
$hMariage = GUICtrlCreateMenuItem("Mariages", $hChoix)
$hDeces = GUICtrlCreateMenuItem("Décès", $hChoix)

GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()

        If $msg = $hBaseOuvrir Then
            $file = FileOpenDialog("Choisissez un fichier...", @TempDir, "All (*.*)")
        EndIf
        If $msg = $hNaissance Then
            MsgBox(0, "Naissance", "Sous-menu naissances cliqué...")
        EndIf
        If $msg = $GUI_EVENT_CLOSE Then
            Exit
        Endif
WEnd
    GUIDelete()
 
Merci encore...

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 13:12
par jguinch
► Afficher le texte

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 20:13
par aulus
Merci,

j'ai testé ton script. Les sous-sous-menus s'affichent bien. Par contre, un clic sur un item du menu n'est pas traité par le programme : rien ne se passe. D'autre part, pas moyen de fermer la fenêtre en cliquant sur la croix blanche en haut à droite de la fenêtre.

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 21:11
par jguinch
Euuuh, là je comprends pas...
C'est ce qu'il y a de plus basique. Tu as recopier le code tel quel ?

Re: [..] sous sous-menu

Posté : jeu. 28 mars 2013 21:20
par mikell
@jguinchard
Malgré que je sois sous XP chez moi ton code eh ben il marche :idea:

Re: [..] sous sous-menu

Posté : ven. 29 mars 2013 08:55
par aulus
Bonjour à tous,

Oui, le code de jguinchard marche super bien. J'avais omis d'ôter la ligne de code déclarant le mode évènementiel. J'ai édité mon dernier message hier soir pour le signaler, mais le forum s'est planté et je ne suis pas arrivé à le rouvrir pour vérifier. D'ailleurs ce matin c'est encore difficile d'ouvrir le forum. Une fenêtre signale une erreur générale concernant la base de données du forum . Après bien des tentatives, je suis enfin arrivé à écrire ce message, souhaitant qu'il s'enregistre bien.

Grand grand merci à tous pour avoir répondu à mes questions.