Controles MENU [Résolu]

Signaler
Messages postés
258
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
27 octobre 2010
-
Messages postés
258
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
27 octobre 2010
-
salut à tous


j'ai une appli VB 6 connectée à une base SQL Server.


Cette appli possède un ensemble de menus, sous menus, etc...


J'ai une table dans le DB qui permet, pour chaque menu et chaque utilisateur de définir son droit d'accès :


Menu Articles => Accès complet, Accès restreint, Pas d'accès du tout


au lancement de l'appli, je charge les différent droit pour l'utilisateur et, dans le cas ou l'utilisateur n'a pas le droit d'accès à un menu, je fais MonMenu.Visible = False.


Le pb c'est que dans certains cas je peux me retrouver avec le menu principal sans aucun enfant. Ce que VB traduit par une belle erreur d'exécution 387.
Ex, avant application des droits j'ai le menu suivant
Tables,
      - Article
      - Client

après application des droits je n'ai que le menu "Table" d'actif. qui génère une err d'exécution décrite plus haut...

BREF, voilà, j'ai posé le contexte, j'en vient à la question...

Comment puis je obtenir une collection représentant l'ensemble des menus avec leurs différents niveaux.
ceci me permettrait de préparer les droits sur la collection et donc de réagir de manière intelligente, en désactivant le menu principal si l'utilisateur n'a le droit à aucune fonction de ce menu.

à ce jour, je m'en sors par des pirouettes mais je pense qu'il existe un moyen d'avoir une collection de menu représentant un truc du style
MenuName, MenuParent

donc, si quelqu'un a une idée... je vous remercie d'avance....

en espérant avoir été assez clair

@+

Pat

 Don't Worry , Be Happy





<hr />
lorsque le problème est résolu, pensez Réponse Acceptée

6 réponses

Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour

Là je ne saurais que te conseiller un recherche dans VBF (voire tout CS) , car là je suis à la limite de ma connaissance concernant ta demande.

dsl.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour

Une proposition :

une sub :
private Sub SetVisibleMenu(byval pVisible as boolean, byref pMenu as Menu)
    pmenu.visible=pVisible
    'Si pas de parent, on sort
    if pmenu.parent is nothing then exit sub
   
    'Parcour des controles pour trouver les frères du menu passé en paramètre
    dim lVi as boolean
    lvi=pVisible
    Dim lCtl as control
    for each lctl in me.controls
        if typeof lctl is menu then
            if lctl.parent is pmenu.parent then
                lvi=lvi or lctl.visible
                if lvi then exit for
            end if
        end if
    next
   
    'Et on passe le relai au menu parent
    SetVisibleMenu lVi,pMenu.Parent
end sub

Utilisation:

SetVisible False, MonMenu

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
258
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
27 octobre 2010
5
salut
merci pour ta réponse
j'avais bien pensé à utiliser le parent 
mais le pb c'est que le Parent renvoyé par VB est le  Form et pas le Menu réellement parent...
...

Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour

Autre proposition (liée à la première)

Dans ton Form_Load : tu met dans le Tag du Menu enfant le nom du menu parent (ce qui exclu la gestion des Index)
Puis à la place du test :
if lctl.parent is pmenu.parent then
tu met
if lctl.name = pmenu.Tag then

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
258
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
27 octobre 2010
5
merci mais bon pas top en terme de maintenance....

j'aurais éventuellement une utilisation d'API qui me renvoi l'arbre de menu...

si tu as une autre idée...

+@

Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée
Messages postés
258
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
27 octobre 2010
5
merci quand meme...
bonne continuation....

Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée