Une remarque pertinente ? Une critique impertinente ? Un lynchage en règle ? Une invitation sous les tropiques ? Ecrivez-moi ! |
|
Conçu et enseigné tel qu'en lui même, avec pertes, fracas et
humour de qualité supérieure par Christophe Darmangeat dans le M2 PISE du Master MECI (Université Paris 7) |
|
LE COURS 10. Les graphismes
11. Les menus
AIDES-MÉMOIRES CHOSES DIVERSES Souvent Posées Questions
Liens utiles
|
Partie 11
Les menusAvec ce tout petit, petit chapitre, on va pouvoir reposer un peu nos neurones surmenés. 1. Le concepteur de menusSauf rare exception, les menus sont un élément incontournable d'une interface applicative. Or, pour créer un système de menus, rien de plus simple. Il suffit de créer un objet (un seul) de la classe MenuStrip (littéralement, « bande » ou « barre » de menus), disponible dans la boîte à outils. Cet objet ouvre en fait une interface graphique qui permet de disposer à loisir et d'un simple clic, menus et sous-menus. C'est extrêmement facile et ergonomique, il suffit de cliquer à côté, ou en-dessous, d'un élément pour pouvoir entrer d'autres éléments dans la position voulue. Côté code, c'est un peu plus compliqué, mais pas beaucoup. Chacun de ces éléments, future commande d'un menu, est un ToolStripMenuItem. S'il se trouve des éléments placés « sous » cet élément, ils forment logiquement une collection. C'est le principe de l'arborescence, et c'est toujours le même, qu'il s'applique aux répertoires, aux contrôles conteneurs d'une Form ou à une architecture de menus. Le truc un peu vicieux, c'est que ce n'est pas la même propriété qui définit la collection selon qu'on se trouve au niveau le plus haut (les commandes principales de la barre de menus) ou à un niveau inférieur.
Dit d'une autre manière : pour définir une collection, la classe MenuStrip possède une propriété Items, tandis que la classe ToolStripMenuItem possède une propriété DropDownItems. Une fois qu'on sait cela, tout roule. 2. Diverses choses à savoir
3. Menus contextuelsIl s'agit de ces menus qui apparaissent lors d'un clic droit de la souris, et dont le contenu varie selon l'endroit où se trouve le curseur. C'est « menus clic droit », comme on les appelle parfois, sont un moyen privilégié une interface réussie et conviviale. Il faut donc absolument connaître cette technique, d'autant qu'elle est très facile à mettre en œvre. Pour qu'un ou plusieurs contrôles disposent d'un menu contextuel :
Et le tour est joué ! À noter qu'un ContextMenu génère un événement PopUp lorsqu'il apparaît, et que tout comme pour un menu ordinaire, le clic sur l'un de ses éléments provoque un événement... Click. Je vous l'avais bien dit, c'était un petit chapitre tranquille. Soyons clairs, l'exercice qui suit est une vacherie.
Pas à cause de la structure des menus, qui se construit facilement grâce au concepteur dont nous venons de parler. Mais le branchement de chaque élément de menu ainsi créé, même s'il peut laborieusement être fait à la main, devra être ici entièrement programmé. La difficulté réside tout entière dans l'exploration des collections de menus, des sous-collections dans les collections, et des sous-sous-collections dans les collections... car pour cela, la meilleure technique consiste à employer un traitement récursif. C'est un peu difficile quand on n'a pas l'habitude, et on n'en a pas fait souvent, mais il y a des situations où cette technique est très difficilement contournable... la preuve ! |