PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → ajouter une option a un menu contextuel
ajouter une option a un menu contextuel
Iniciado por raimbourg jerome, ago., 02 2005 1:06 PM - 3 respostas
Publicado em agosto, 02 2005 - 1:06 PM
J'ai bien vu qu'il y avait déjà un post à ce sujet mais je voudrai savoir si quelqu'un avait trouvé une solution.

Le but de la manoeuvre est de rajouter en programmation un nombre d'option (inconnu d'avance) à un menu contextuel
Publicado em agosto, 02 2005 - 3:36 PM
salut,

trouvé dans l'aide en ligne ....

WinDev permet de manipuler les menus contextuels personnalisés par programmation :

Propriété MenuContextuel
Permet de connaître et de changer le menu contextuel personnalisé associé à un champ ou à une fenêtre. Permet également :
- d'associer ou non un champ à un menu contextuel.
- d'afficher ou non le menu contextuel système par défaut.

Fonction ChampContextuel
Identifie le champ sur lequel un menu contextuel personnalisé a été ouvert (à utiliser dans le code du menu contextuel personnalisé).

Fonction OuvreMenuContextuel
Permet d'ouvrir automatiquement le menu contextuel d'un champ ou d'une fenêtre. Il est possible de choisir le menu contextuel à ouvrir et sa position.

La manipulation d'une option de menu est identique que le menu soit un menu contextuel ou un menu principal.

Pour manipuler par programmation une option de menu, utilisez la notation :

"<NomOption>" si l'option de menu est manipulée depuis la fenêtre.

"<NomFenêtre>.<NomMenu>.<NomOption>" si l'option est manipulée depuis une autre fenêtre.

Remarque : il est également possible de manipuler les menus contextuels par programmation (et non uniquement ses options). Pour plus de détails, consultez Gestion des menus contextuels .

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Fonctions du W-Langage

WinDev propose plusieurs fonctions du W-Langage spécifiques aux options de menu :

Marquage d'une option de menu
MenuDémarque
Enlève la marque devant l'option de menu

MenuMarquage
Permet de savoir si la marque est présente devant l'option de menu

MenuMarque
Positionne la marque devant l'option de menu

+++++++++++++++++++++++++++++++++++++++++++++++++
Etat d'une option de menu
MenuEtat
Identifie l'état d'une option de menu : active, inactive ou invisible

MenuInvisible
Rend une option de menu invisible

MenuSelectMoins
Désactive (grise) une option de menu

MenuSelectPlus
Active une option de menu

Libellé d'une option de menu
MenuLibellé
Identifie ou modifie le libellé d'une option de menu

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EnumèreMenu : Renvoie le nom de la nième option de menu
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Propriétés du W-Langage
WinDev propose plusieurs propriétés du W-Langage spécifiques aux options de menu :

Cochée : Permet de gérer une marque devant l'option de menu.
Etat : Permet de connaître et de modifier l'état d'affichage (actif, inactif ou grisé) d'une option de menu
Groupe : Permet de savoir si l'option de menu appartient ou non à un groupe de champs
Image : Permet de connaître et de modifier l'image d'une option de menu
Libellé : Permet de connaître et de modifier le libellé d'une option de menu
Message : Permet de connaître et de modifier le message d'aide d'une option de menu
Nom : Permet de connaître le nom d'une option de menu
Type : Permet de savoir si l'élément manipulé est une option de menu
Valeur : Permet de connaître et de modifier le numéro associé à une option de menu
Visible : Permet de savoir si une option de menu est visible et de rendre visible / invisible une option de menu


J'espere qu'avec toutes ces infos tu pourras te debrouiller a modifier ton menu contextuel

cordialement

Greg
Publicado em agosto, 03 2005 - 10:20 AM
Bonjour,

Malheureusement, rien qui ne permet d'ajouter des menus par programmation....
Publicado em agosto, 03 2005 - 1:37 PM
avec un peu de ruse...

solution 1
tu peux passer par les API windows , ça fonctionne super mais n'étant pas un expert j'ai pas encore donné un lock sympa a ces menu, sous menu ...

solution 2
pas super propre mais facile et ça marche

1/ créer un menu contextuel avec une option

2/ ajout d'une option dans un menu ou autre menu contextuel de la même fenêtre

2.1 Modifier le libellé de l'option dans le menu contextuel source

MenuLibellé(Mafenetre,monMenu.monOption,"NouveauLibellé)

2.2 Ajouter l'option dans le menu cible

MenuAjoute(monMenuCible,monOption,maPosition)

bon là on a ajouter l'option mais toutes les options ajoutées font le même code
il faut donc gérer un tableau dynamique qui fait le lien entre le libellé inséré et une fonction à exécuter.

code déclaration globale de la fenêtre :

monTableau est un tableau dynamique de 0,2 chaines

à chaque ajout d'une option

liIndiceMenu est un entier = tableauinfo(monTableau,tiNombreLigne)+1
dimension(monTableau,liIndiceMenu,2)

monTableau[liIndiceMenu,1] = "NouveauLibellé"
monTableau[liIndiceMenu,2] = "nomFonctionAssociée"

code de l'option de menu

liIndice est un entier = tableauCherche(monTableau,tcLinéaire,1,Moimeme..Libellé)

si liIndice<>-1 alors
executetraitement(monTableau[liIndice,2],trtProcedure)
sinon
erreur("aucune procédure associée à ce choix !")
fin


ps :
on peut aussi gérer propriété valeur renvoyée par MonOption..Valeur plutôt que le libellé
mais il faut récupérer la valeur après l'insert dans le menu ce qui demande un peut plus de code, mais qui permet de modifier le libellé après l'insert...
question de besoin

on espère aussi un jour pouvoir récupérer autre chose que 0 quand on fait Handle() sur un menu ou une option
ou benéficier d'un ChampClone() sur les menu et option ce qui permettrait de les nommer.

bon dev

patrice