OVH Cloud OVH Cloud

[WD9] comment lister les libelles d'un menu d'une fenetre

2 réponses
Avatar
titou44
Bonsoir

en complément d'un fil précédent, je complète ma demande.
je cherche à lister par programmation tous les libellés d'un menu
principal d'une fenêtre.
et ce, sans connaitre à priori les 'dimensions' du menu.

dans l'aide, il y a un exemple, soi-disant pour lister un menu. or il
ne descend pas plus bas que 2 "niveaux".
très utile donc comme exemple !

je sèche ce soir

merci pour votre bon coeur !

titou44 chez freesurf.fr

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

2 réponses

Avatar
Erwan
>Bonsoir

en complément d'un fil précédent, je complète ma demande.
je cherche à lister par programmation tous les libellés d'un menu
principal d'une fenêtre.
et ce, sans connaitre à priori les 'dimensions' du menu.



En utilisant le groupware utilisateur, sur la fenêtre GPWDetailConfiguration,
il y a une fonction pour lister tout les élément d'un menu. voici le code :

PROCEDURE RemplirMenu(sParent, nNiveau=0)

LOCAL
sz_LibelleMenu est une chaîne // Libellé du menu sasn &

// énumération des options de menu
sOption est une chaîne=EnumèreSousElément(sParent,enumPremier+enumMenuPrincipal)

// il ne faut pas mettre le nom du menu
SI nNiveau=0 ET sOption<>"" ALORS
RemplirMenu(sParent+"."+sOption,nNiveau+1)
RETOUR
FIN

TANTQUE sOption<>""

// nom complet de l'option de menu
sNomComplet est une chaîne=sParent+"."+sOption

// ajoute l'option de menu
SI {sNomComplet,indGPW}..Type=typOptionMenu ALORS
sz_LibelleMenu = Remplace({sNomComplet,indGPW}..Libellé,"&","")
AjouteElement(sNomComplet,typOptionMenu,sz_LibelleMenu,"",nNiveau)
FIN

// remplit les options du niveau supérieur
RemplirMenu(sNomComplet,nNiveau+1)

// option suivante
sOption=EnumèreSousElément(sParent)
FIN

--
sParent est le nom de la fenêtre.

Voilà.

--
Message monitoré par axinews : http://www.axinews.com/
Avatar
titou44
Erwan a présenté l'énoncé suivant :
Bonsoir

en complément d'un fil précédent, je complète ma demande.
je cherche à lister par programmation tous les libellés d'un menu
principal d'une fenêtre.
et ce, sans connaitre à priori les 'dimensions' du menu.



En utilisant le groupware utilisateur, sur la fenêtre GPWDetailConfiguration,
il y a une fonction pour lister tout les élément d'un menu. voici le code :

PROCEDURE RemplirMenu(sParent, nNiveau=0)

LOCAL
sz_LibelleMenu est une chaîne // Libellé du menu sasn &

// énumération des options de menu
sOption est une
chaîne=EnumèreSousElément(sParent,enumPremier+enumMenuPrincipal)

// il ne faut pas mettre le nom du menu
SI nNiveau=0 ET sOption<>"" ALORS
RemplirMenu(sParent+"."+sOption,nNiveau+1)
RETOUR
FIN

TANTQUE sOption<>""

// nom complet de l'option de menu
sNomComplet est une chaîne=sParent+"."+sOption

// ajoute l'option de menu
SI {sNomComplet,indGPW}..Type=typOptionMenu ALORS
sz_LibelleMenu = Remplace({sNomComplet,indGPW}..Libellé,"&","")
AjouteElement(sNomComplet,typOptionMenu,sz_LibelleMenu,"",nNiveau)
FIN

// remplit les options du niveau supérieur
RemplirMenu(sNomComplet,nNiveau+1)

// option suivante
sOption=EnumèreSousElément(sParent)
FIN

--
sParent est le nom de la fenêtre.

Voilà.




bonjour.

merci pour ton code.
voici celui que j'ai pondu entretemps :

PROCEDURE liremenu(p_menu)
LOCAL
n1 est entier
n2 est entier
limb est un entier
listelib est une chaîne
NomMenu est une chaîne
NomSousMenu est une chaîne
lechamp est une chaîne
lelib est une chaîne

limb = 1
listelib = p_menu + "|"

FOR n1 = 1 TO limb

n2 = 1
NomMenu = ExtraitChaîne(listelib,n1,"|")
NomSousMenu = EnumèreMenu (NomMenu,n2)

TANTQUE NomSousMenu <> ""
lechamp = {NomSousMenu}..Libellé
trace(lechamp)

listelib = listelib + NomSousMenu + "|"
limb = limb + 1
n2 = n2 + 1

NomSousMenu = EnumèreMenu (NomMenu, n2)
FIN
FIN


et en début de fenetre
liremenu(fenenexecution())

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com