Création d'un menu 'à la Office 2000'

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

La création de menus "à la office 2000" diffère sensiblement de la création de menus Windows classiques. Heureusement, les nouveaux composants de Delphi 6 rendent l'opération aisée...

source du projet: officemenusrc.zip (2.73 ko)

II. Définition des éléments du menu

Posez sur votre fiche un composant TActionManager de l'onglet "Supplément"

Image non disponible

Effectuez un double-clic sur le composant que vous venez de poser. Choisissez l'onglet "Actions". Cliquez sur le bouton "Nouvelle Action".

Image non disponible

Une action sera créée, et apparaîtra dans la liste "Actions"

Image non disponible

Contrairement à la création de menus classiques, l'élément que vous venez de définir ne sera pas affiché dans le menu principal, il fera partie d'un menu. Les menus à la Office sont divisés en catégories. C'est la catégorie qui déterminera le texte affiché dans le menu principal. Par conséquent, il faut choisir un nom de catégorie à votre élément de menu.

Pour cela, vérifiez en premier lieu que l'élément sélectionné dans l'"Inspecteur d'objets" est bien "Action1". Sélectionnez ensuite la propriété "Category" de l'élément "Action1". Vous remarquerez que cette propriété dispose d'une liste de choix, qui est actuellement vide. En effet, vous n'avez encore créé aucune catégorie. A présent, créez votre catégorie : effacez le texte qui s'y trouve (normalement, "(pas de catégorie)"), et tapez le texte à Afficher (par exemple, "Fichier", puis appuyez sur la touche entrée. Vous remarquerez qu'un nouvel élément apparaît dans la liste "Catégories", avec pour texte celui que vous venez de taper.

A présent, changeons quelques propriétés de notre élément de menu, car par défaut, il porte le texte "Action1". Vérifiez en premier lieu que sa propriété "Enabled" est sur true, car dans le cas contraire l'élément apparaîtra grisé dans le menu. Ensuite, changez sa propriété "Caption" et mettez le texte que vous voulez voir dans le menu. Changez éventuellement la propriété "Name"...

Créez maintenant un 2° élément de menu, en sélectionnant la catégorie "Fichier", et en le configurant comme au paragraphe précédent. Puis, appuyez sur le bouton "Close" du dialogue de configuration du TActionManager.

III. Mise en place des éléments dans le menu.

Posez un composant TActionMainMenuBar sur votre fiche.

Image non disponible

Effectuez à nouveau un double-clic sur le TActionManager. A présent, cliquez-glissez la catégorie "Fichier" dans votre TActionMainMenuBar.

Fermez le dialogue de configuration du TActionManager, et appuyez sur le bouton "Exécuter".

Image non disponible

Vous remarquerez que quand vous ouvrez le menu, les éléments sont grisés !!! Les éléments de menu sans action sont automatiquement désactivés.

Remédions à cela: Fermez tout d'abord votre application. Maintenant, les éléments de menu sont accessibles directement depuis la fiche. Sélectionnez le premier élément de menu, allez dans l'"Inspecteur d'objet", sélectionnez l'onglet "Evénements", appuyez sur le "+" si vous ne voyez pas la ligne "OnExecute", et enfin double-cliquez sur la case de la ligne "OnExecute". mettez le code suivant:

 
Sélectionnez

procedure TForm1.Action1Execute(Sender: TObject);
begin
  Caption := 'Premier Element cliqué';
end;

Répétez l'opération avec le 2° élément: mettez "Quitter" dans sa propriété Caption, et mettez le code suivant dans son évennement OnExecute:

 
Sélectionnez

procedure TForm1.Action2Execute(Sender: TObject);
begin
  Close;
end;

Exécutez à nouveau votre application. Vous remarquez à présent que le premier élément de menu n'est plus grisé, et que lorsque vous cliquez dessus, le texte de la fiche devient "Premier élément cliqué".

IV. Finition

Jusque là, il n'y a aucune fonctionnalité supplémentaire par rapport aux menus standard Windows, et par conséquent aucun intérêt. Ce qui fait tout l'intérêt des menus à la office, c'est le fait que des éléments inutilisés puissent être masqués.

Pour masquer temporairement certains éléments de menus, et par la même occasion faire apparaître la petite flèche, il faut modifier la propriété "PriorityShedule" du TActionManager, et la propriété "UsageCount" des éléments du menu...

Sur la fiche, cliquez sur le menu et sélectionnez le premier élément du menu. Mettez sa propriété "UsageCount" sur -1. Mettre -1 à la propriété UsageCount d'un élément de menu le rendra toujours visible. Sélectionnez le second élément de menu. Regardez sa propriété "UsageCount". Par défaut, elle est sur 0. Laissez la sur 0.

A présent, il faut demander à Delphi de masquer les éléments dont le UsageCount est sur 0. Sélectionnez le composant TActionManager, et cliquez deux fois sur sa propriété "PriorityShedule". Par défaut, elle contient une correspondance clés/valeurs prédéfinie. Sélectionnez la première ligne (clé 0), et mettez 1 comme valeur:

Image non disponible

Appuyez sur "Ok", et exécutez le projet. Maintenant, quand vous ouvrez le menu, le 2° élément de menu sera masqué, et vous obtiendrez une petite flèche. Cliquez sur la petite flèche, et le 2° élément de menu apparaîtra.

Image non disponible

Enfin, pour donner au menu un look standard, il faut sélectionner le TActionMainMenuBar, et mettre ses propriétés "EdgeInner" et "EdgeOuter" sur esNone.

Liste de mes articles :
Delphi 6 : Réalisation d'un explorateur de fichiers
Delphi 6 : Création d'un menu 'à la Office 2000'
Delphi 7: Réaliser un Client FTP à l'aide des composants Indy
Delphi 7 : Donner le style Windows XP à vos applications sous Windows XP
Portage d'applications CLX entre Delphi 6 et Kylix
Tri par Sélection
Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.