pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 2010
-
15 janv. 2008 à 11:32
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 2010
-
17 janv. 2008 à 11:20
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
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 15 janv. 2008 à 12:00
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
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 15 janv. 2008 à 12:04
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
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 15 janv. 2008 à 12:15
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
Vous n’avez pas trouvé la réponse que vous recherchez ?