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"
Effectuez un double-clic sur le composant que vous venez de poser. Choisissez l'onglet "Actions". Cliquez sur le bouton "Nouvelle Action".
Une action sera créée, et apparaîtra dans la liste "Actions"
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.
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".
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:
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:
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:
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.
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.