IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Menu Dynamique [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Menu Dynamique
    Bonjour,

    je me creuse la tête sur un problème

    Alors, j'aimerai, de façon dynamique, créer un menu.
    J'ai 3 tables :
    [MATERIEL_GROUPE]
    MGR_CODE
    MGR_LIBELLE

    [MATERIEL_TYPE]
    MTY_CODE
    MTY_MGR_CODE
    MTY_LIBELLE

    [MATERIEL]
    MAT_CODE
    MAT_MTY_CODE
    MAT_LIBELLE

    Ce que je souhaiterai, c'est afficher dans un sous-menu existant : Affichage --> Affichage Matériel la liste des groupes de matériels, avec pour chaque groupe, les types de matériels, et pour chaque type, les matériels correspondants.
    Vu que ces 3 tables sont entièrement paramétrables, je ne sais pas combien il y a de groupes, ni de types, ni de matériels.
    Il n'est donc pas possible de créer déjà des menus et d'en rajouter avec LOAD

    Je pensais aux APIs.
    Cependant, là je galère parce que pour rajouter un menu dans 'Affichage', ca va, mais pour en rajouter dans 'Affichage --> Affichage matériels', là ça se complique. Je n'y arrive pas du tout.
    Donc si quelqu'un est à l'aise avec GetSubMenu , AppendMenu
    , et les autres, je suis preneur

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    c'est en VB, mais tu peux toujours me montrer en VBA pour avoir une idée...
    merci...

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ah oui, alors effectivement, ca ne va pas marcher pour moi ca
    Merci quand même.
    Ma solution est plus dans les APIs mais je ne vois pas comment créer un sous-menu d'un sous-menu

  4. #4
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Declare Function GetMenu Lib "user32.dll" ( _ 
         ByVal hwnd As Long) As Long 
     
    Private Declare Function CreatePopupMenu Lib "user32.dll" () As Long 
     
    Private Declare Function AppendMenu Lib "user32.dll" Alias "AppendMenuA" ( _ 
         ByVal hMenu As Long, _ 
         ByVal wFlags As Long, _ 
         ByVal wIDNewItem As Long, _ 
         ByVal lpNewItem As Any) As Long 
     
    Private Declare Function InsertMenu Lib "user32.dll" Alias "InsertMenuA" ( _ 
         ByVal hMenu As Long, _ 
         ByVal nPosition As Long, _ 
         ByVal wFlags As Long, _ 
         ByVal wIDNewItem As Long, _ 
         ByVal lpNewItem As Any) As Long 
     
    Private Const MF_BYPOSITION As Long = &H400& 
    Private Const MF_POPUP As Long = &H10& 
    Private Const MF_STRING As Long = &H0& 
     
    Private Sub MDIForm_Load() 
     
        Dim SubMenu As Long 
        Dim IdMenu As Long 
     
        IdMenu = GetMenu(Me.hwnd) 
     
        SubMenu = CreatePopupMenu 
     
        AppendMenu SubMenu, MF_STRING, 0, "Element 1" 
        AppendMenu SubMenu, MF_STRING, 1, "Element 2" 
        AppendMenu SubMenu, MF_STRING, 2, "Element 3" 
        AppendMenu SubMenu, MF_STRING, 3, "Element 4" 
     
        InsertMenu IdMenu, 0, MF_BYPOSITION Or MF_POPUP, SubMenu, "Menu 1" 
     
    End Sub
    Reste à savoir comment réagir sur le clic de ces nouveaux menus...
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par HPJ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Declare Function GetMenu Lib "user32.dll" ( _ 
         ByVal hwnd As Long) As Long 
     
    Private Declare Function CreatePopupMenu Lib "user32.dll" () As Long 
     
    Private Declare Function AppendMenu Lib "user32.dll" Alias "AppendMenuA" ( _ 
         ByVal hMenu As Long, _ 
         ByVal wFlags As Long, _ 
         ByVal wIDNewItem As Long, _ 
         ByVal lpNewItem As Any) As Long 
     
    Private Declare Function InsertMenu Lib "user32.dll" Alias "InsertMenuA" ( _ 
         ByVal hMenu As Long, _ 
         ByVal nPosition As Long, _ 
         ByVal wFlags As Long, _ 
         ByVal wIDNewItem As Long, _ 
         ByVal lpNewItem As Any) As Long 
     
    Private Const MF_BYPOSITION As Long = &H400& 
    Private Const MF_POPUP As Long = &H10& 
    Private Const MF_STRING As Long = &H0& 
     
    Private Sub MDIForm_Load() 
     
        Dim SubMenu As Long 
        Dim IdMenu As Long 
     
        IdMenu = GetMenu(Me.hwnd) 
     
        SubMenu = CreatePopupMenu 
     
        AppendMenu SubMenu, MF_STRING, 0, "Element 1" 
        AppendMenu SubMenu, MF_STRING, 1, "Element 2" 
        AppendMenu SubMenu, MF_STRING, 2, "Element 3" 
        AppendMenu SubMenu, MF_STRING, 3, "Element 4" 
     
        InsertMenu IdMenu, 0, MF_BYPOSITION Or MF_POPUP, SubMenu, "Menu 1" 
     
    End Sub
    Reste à savoir comment réagir sur le clic de ces nouveaux menus...
    Merci HPJ,
    La question que je me pose, c'est comment ajouter un sous-menu à Element 1 par exemple dans ton exemple ? et un sous-menu à ce nouveau sous-menu, etc...

  6. #6
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Je ne sais pas... ce code n'est pas de moi.
    Mais de toute façon c'est inutile de chercher tantqu'on ne peut pas exécuter du code sur le clic des menus créés...
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    C'est sûr, et je n'ai pas trouvé comment faire, ou si c'est tout simplement faisable...

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu n'as pas l'équivalent de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    .OnAction = "Ta commande"
    en VB ?

    dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       AppendMenu SubMenu, MF_STRING, 3, "Element 4"
    à quoi correspond "Element 4" ?

    A+

  9. #9
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Salut !
    Pour ce qui est de l'appel des actions associées aux menus, tu peux utiliser la fonction CallByName. Par exemple si ton item de menu s'appelle "Additionner", il te faudra une méthode de classe "Additionner" que tu pourra appeler par son nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub itGenerate_Click(Index As Integer)
        CallByName maClasse, itGenerate(Index).Caption, VbMethod
    End Sub
    Bon courage
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

Discussions similaires

  1. [Free Pascal] Intégrer des valeurs dans un menu dynamique
    Par boullery dans le forum Free Pascal
    Réponses: 16
    Dernier message: 30/03/2005, 17h04
  2. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  3. [JSP]menu dynamique en jsp
    Par laouedjahmed dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/03/2004, 10h50
  4. Menu dynamique sous Flash MX
    Par dens63 dans le forum Flash
    Réponses: 7
    Dernier message: 29/10/2003, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo