4D v16.3

Gestion des menus

Accueil

 
4D v16.3
Gestion des menus

Gestion des menus  


 

 

Terminologie : La documentation sur les commandes de menus emploie indifféremment commande de menu et ligne de menu lorsqu'elle évoque une ligne d'un menu.

Le langage de 4D propose deux modes de manipulation des menus et des barres de menus : par des références ou des numéros.

  • La gestion de menus par référence (RefMenu) est le nouveau mode de gestion des menus, introduit depuis la version 11 de 4D. Ce mode donne accès à des fonctions avancées telles que la création d'interfaces entièrement dynamiques (menus créés "à la volée" sans devoir exister dans l'éditeur de menus) et la gestion de sous-menus hiérarchiques multi-niveaux.
  • La gestion de menus et de barres de menus par numéro s'appuie sur les menus créés dans l'éditeur de menus en mode Développement. Chaque barre de menus et menu se voit attribuer un numéro fixe (correspondant à sa position dans l'éditeur). Ce numéro est utilisé par les commandes du langage pour désigner la barre ou le menu. La portée des commandes du langage appliquées aux menus gérés par numéro est la barre de menus courante.
    Ce fonctionnement correspond aux versions précédentes de 4D et obéit à plusieurs règles (décrites ci-dessous dans le paragraphe "Manipulation des menus par numéros"). Il peut toujours être utilisé mais ne permet pas de tirer parti des nouvelles fonctions proposées à partir de la version 11, notamment la gestion dynamique des menus et l'utilisation de sous-menus hiérarchiques : il n'est pas possible d'accéder à un sous-menu hiérarchique par un numéro.

Les deux modes de gestion des menus sont compatibles et peuvent être utilisés simultanément dans vos interfaces. La plupart des commandes du thème “Menus” acceptent indifféremment des numéros ou des références de menus.
Toutefois, la gestion par référence est conseillée car elle offre davantage de possibilités. A noter que si votre interface de menus est définie partiellement ou en totalité via l'éditeur de menus, il est parfaitement possible de l'exploiter sous forme de références à l'aide des commandes Get menu bar reference et GET MENU ITEMS.

Lorsque les menus sont manipulés par l'intermédiaire de références RefMenu, il n’y a pas de différence de nature entre un menu et une barre de menus. Il s’agit dans les deux cas de listes de libellés. Seul leur usage diffère. Dans le cas d’une barre, chaque libellé correspond à un menu, composé de libellés. C’est également sur ce principe que repose la définition de menus hiérarchiques : chaque libellé peut à son tour être un menu, et ainsi de suite.

Lorsqu’un menu est géré par référence, toute modification effectuée sur ce menu durant la session est immédiatement répercutée à l’ensemble des instances de ce menu et ce, dans tous les process de la base.

RefMenu  

A l’image des listes hiérarchiques, tous les menus disposent d'une référence unique, grâce à laquelle il pourront être identifiés durant toute la session. Cette référence, nommée par convention RefMenu, est un alphanumérique de 16 caractères. Toutes les commandes du thème “Menus” acceptent soit cette référence, soit un numéro de menu pour désigner un menu ou une barre.
Les références des menus peuvent être obtenues par les commandes Create menu, Get menu bar reference ou GET MENU ITEMS.

Les barres de menus peuvent être définies dans l'éditeur de menus en mode Développement. En mode de gestion par numéro, chaque barre de menus est identifiée par un numéro et par un nom. La première barre de menus (automatiquement créée par 4D) porte le numéro 1 et est nommée par défaut "Barre n°1". Vous pouvez la renommer dans l'éditeur de menu. Le nom d’une barre de menus peut contenir jusqu’à 31 caractères et doit être unique.
La barre n°1 est aussi la barre de menus utilisée par défaut. Si vous souhaitez ouvrir une application avec une barre de menus autre que la barre n°1, vous devez appeler la commande SET MENU BAR dans la On Startup database method. Il n'est pas possible de modifier par programmation le contenu même d'une barre de menus, en revanche les menus qui la composent peuvent être modifiés. La portée des commandes du langage appliquées aux menus statiques est la barre de menus courante. A chaque appel de la commande SET MENU BAR (sans le paramètre *), tous les menus et les commandes de menus retrouvent leur état originel tel que défini dans l'éditeur de menus.

Chaque barre de menus comporte par défaut trois menus — Fichier, Edition et Mode.

  • Le menu Fichier ne contient qu'une commande de menu : Quitter. L'action standard Quitter lui est associée. Cette action affiche une boîte de dialogue de confirmation “Etes-vous certain ?” puis quitte l’application 4D en cas de validation. Dans le cas contraire, l’opération est annulée.

Note : Sous Mac OS, la commande de menu créé associée à l’action Quitter est automatiquement placée dans le menu de l’application, lorsque la base est exécutée sur ce système.

Vous pouvez renommer le menu Fichier, lui ajouter des commandes de menu ou le garder tel quel. Il est recommandé de toujours garder la commande de menu Quitter comme dernière commande du menu Fichier.

  • Le menu Edition contient les commandes de menu d'édition standard. A chaque commande de ce menu est associée une action standard (Annuler, Couper, Copier, etc.). Vous pouvez ajouter des commandes à ce menu ou utiliser vos propres méthodes de gestion des actions d'édition.
  • Le menu Mode contient par défaut la commande Retour au mode Développement. Cette commande permet de retourner au mode Développement (lorsqu'il est disponible) à partir du mode Application.

Note : 4D gère automatiquement les menus système Aide et application (Mac OS). Ces menus ne peuvent pas être modifiés, hormis pour la commande A propos de 4D..., qui peut être gérée à l'aide de la commande SET ABOUT.

Important : Les barres de menus sont "interprocess". Toute modification effectuée sur une barre en mode Développement sera répercutée dans tous les process où la barre est utilisée.

Comme les barres de menus, les menus sont numérotés. Le menu Fichier est généralement le menu 1. Les autres menus sont numérotés séquentiellement de gauche à droite (2, 3, 4, etc.). Le menu Application (Mac OS ) est exclu de cette numérotation. Sur toutes les plates-formes, le menu Aide est également exclu. Il est à noter que la commande Count menus ne tient pas compte de ces menus. Si, par exemple, votre barre de menus est constituée des menus Fichier, Edition, Clients, Factures et Aide, Count menus retournera 4 (en ignorant les menus système maintenus par 4D).
La numérotation des menus est importante lorsque vous travaillez, par exemple, avec la fonction Menu selected.

Lorsqu'un menu est associé à un formulaire, le principe de numérotation est différent. Le premier menu ajouté commence avec le numéro 2049. Pour référencer un menu associé à un formulaire, ajoutez 2048 au numéro initial du menu.

Les commandes de chacun des menus sont numérotées séquentiellement de haut en bas, y compris les séparateurs. La commande supérieure a le numéro 1.

Vous pouvez associer une barre de menus à un formulaire dans les Propriétés du formulaire (page Général). Ce type de barre est appelé "barre de menus de formulaire" dans cette section.
Les menus d'une barre de menus de formulaire sont ajoutés à la barre de menus courante lorsque le formulaire est affiché comme formulaire de sortie dans le mode Application.
Les barres de menus de formulaires sont référencées par un numéro et un nom. Si le numéro ou le nom de la barre de menus affichée avec le formulaire courant est le même que celui de la barre de menus associée au formulaire, cette dernière ne s'affiche pas.
Par défaut, lorsqu'un formulaire est affiché avec une barre de menus personnalisée, les commandes de la barre de menus courante sont inactivées, c'est-à-dire que leur sélection est sans effet. Vous pouvez modifier ce fonctionnement en cochant l'option Barre de menus active dans les Propriétés du formulaire : dans ce cas, les commandes de la barre de menus courante restent utilisables.
Dans tous les cas, la sélection d'une commande de menu provoque l'envoi d'un événement On Menu Selected à la méthode formulaire ; vous pouvez alors utiliser la commande Menu selected pour tester le menu sélectionné.

Les menus peuvent être rattachés à des barres de menus. Si un menu rattaché est modifié à l'aide d'une de ces commandes, chacune des instances de ce menu reflètera ces modifications. Pour plus d'informations sur ce point, reportez-vous au manuel Mode Développement de 4D.

Chaque commande de menu peut être associée à une méthode projet ou une action standard. Si vous n'affectez pas de méthode ni d'action standard à une commande de menu, la sélection de cette commande de menu provoque la sortie du mode Application et le retour en mode Développement. Si seul le mode Application est disponible ou si l'utilisateur ne dispose pas des privilèges d'accès pour le mode Développement, cela provoquera la fermeture de l'application.
Les actions standard permettent d'effectuer diverses opérations courantes liées aux fonctions système (copier, quitter, etc.) ou de base de données 4D (ajouter enregistrement, tout sélectionner, etc.).

Vous pouvez associer à la fois une action standard et une méthode projet à une commande de menu. Dans ce cas, l’action standard n’est jamais exécutée ; toutefois, 4D utilise cette action pour activer/inactiver la commande de menu en fonction du contexte et lui associer éventuellement un comportement spécifique en fonction de la plate-forme (par exemple, l'action Préférences est passée dans le menu application sous Mac OS). Lorsqu’une commande de menu est inactivée, la méthode projet associée ne peut être exécutée.

Afin de faciliter la manipulation des lignes de menus, 4D propose un raccourci permettant de désigner la dernière ligne ajoutée au menu : il suffit pour cela de passer -1 dans le paramètre ligneMenu.
Ce principe est utilisable dans toutes les commandes du thème “Menus” manipulant des lignes de menus.



Voir aussi  

Pop up menu

 
PROPRIÉTÉS 

Produit : 4D
Thème : Menus

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)