Comment connaitre le nom d'une option de menu à partir de son identifiant

Demandé et répondu par R&B le 05-Oct-2004 15:47

Comment connaitre le nom d'une option de menu à partir de son identifiant

L'énumération des élements apparue avec WinDev 7 permet bien des choses...

Dans le cas présent une procédure pour connaitre le nom d'une option de menu à partir de son identifiant (pratique pour en constituer une liste)

// Retourne le nom d'une option de menu à partir de son N° ID
PROCEDURE MenuNom(sParent,nNumOption, nNiveau=0)
// L'appel est du type :
//	MenuNom(NomFenêtre,NumOption)
//		NomFenêtre	= Nom de la fenêtre contenant le menu à parcourir
//		NumOption	= Numéro de l'option recherchée
sRetour est une chaîne		// nom de l'option ayant pour ID nNumOption
// é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
	sRetour=MenuNom(sParent+"."+sOption,nNumOption,nNiveau+1)
FIN
TANTQUE sOption<>"" ET sRetour=""
	// nom complet de l'option de menu
	sNomComplet est une chaîne=sParent+"."+sOption
	SI {sNomComplet}..Valeur=nNumOption ALORS
		sRetour=sNomComplet
	SINON
		// remplit les options du niveau supérieur
		sRetour=MenuNom(sParent+"."+sOption,nNumOption,nNiveau+1)
	FIN
	// option suivante
	sOption=EnumèreSousElément(sParent)
FIN
RENVOYER sRetour


Exemple d'utilisation :
// copie la liste des options du menu dans le presse papier (pour excel)
i est un entier
ss,sm,sf sont des chaines
sf = FenEnExécution()
Sablier
POUR i=1 A 200
	Jauge(i,200)
	ss+=i+TAB+MenuNom(sf,i)+RC
FIN
Jauge
VersPressePapier(ss)

donne un résultat comme suit :
Citation :
1 Menu._Menu.Fichier
2 Menu._Menu.Fichier.Config
3 Menu._Menu.Fichier.Quitter
4 ...

Cette Q&R a été trouvée sur WDForge.org : http://old.wdforge.org/modules/smartfaq/faq.php?faqid=63