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
Code : Tout sélectionner
Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $hCtrl = $lParam
If $hCtrl = GUICtrlGetHandle($save) Then
FileSaveDialog( "Enregistrer.", @ScriptDir, "Tous les fichiers (*.*)", 2)
ElseIf $hCtrl = GUICtrlGetHandle($open) Then
FileOpenDialog("Ouvrir un fichier", @ScriptDir, "Tous les fichiers (*.*)")
ElseIf $hCtrl = GUICtrlGetHandle($exportAVI) Then
FileSaveDialog( "Exporter en AVI.", @ScriptDir, "Video (*.avi)", 2)
ElseIf $hCtrl = GUICtrlGetHandle($exportMKV) Then
FileSaveDialog( "Exporter en MKV.", @ScriptDir, "Video (*.mkv)", 2)
EndIf
EndFunc
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
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
Code : Tout sélectionner
GUICreate("fenetre")
$hFichier = GUICtrlCreateMenu("Fichier")
$hBaseOuvrir = GUICtrlCreateMenuItem("Ouvrir une base", $hFichier)
$hReleve = GUICtrlCreateMenu("Exploitation")
$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 = -3 Then
Exit
Endif
WEnd
GUIDelete()
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

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.