[R] sous sous-menu

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

[R] sous sous-menu

#1

Message 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.
Modifié en dernier par aulus le ven. 29 mars 2013 09:00, modifié 2 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] sous sous-menu

#2

Message par jguinch »

Salut
La fonction GUICtrlCreateMenu n'est-elle pas suffisante pour créer ton menu ?

Edit : sinon tu peux regarder cet UDF
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] sous sous-menu

#3

Message 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)
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] sous sous-menu

#4

Message 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.
Modifié en dernier par aulus le jeu. 28 mars 2013 11:03, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] sous sous-menu

#5

Message 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+
Modifié en dernier par jguinch le jeu. 28 mars 2013 11:08, modifié 1 fois.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] sous sous-menu

#6

Message par aulus »

Merci. J'ai mis entre

Code : Tout sélectionner

. Je vais étudier tout ça.
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] sous sous-menu

#7

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

Re: [..] sous sous-menu

#8

Message par jguinch »

► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] sous sous-menu

#9

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

Re: [..] sous sous-menu

#10

Message par jguinch »

Euuuh, là je comprends pas...
C'est ce qu'il y a de plus basique. Tu as recopier le code tel quel ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] sous sous-menu

#11

Message par mikell »

@jguinchard
Malgré que je sois sous XP chez moi ton code eh ben il marche :idea:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] sous sous-menu

#12

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