Comment ajouter un élément de menu par défaut du menu contextuel
Le but est de créer des menus qui peuvent être utilisées avec certains contrôles sur une MS Access forme et être en mesure de faire un clic droit sur un contrôle, par exemple sur une listbox et un contexte spécifique menu contextuel avec des options, si vous cliquez dessus, susceptible de déclencher un prédéfini sous-routine ou une fonction.
Quelle est la meilleure méthode pour accomplir ce par programmation?
Je suis en utilisant MS Access 2003 et aimerait le faire à l'aide de VBA.
La réponse dépend grandement de la version d'Access. Si A2007, une réponse, n'importe quelle version précédente, une réponse complètement différente.
OriginalL'auteur Curtis Inderwiesche | 2009-04-20
Vous devez vous connecter pour publier un commentaire.
D'abord créer un
_MouseUp
événement à exécuter sur le contrôle de la recherche pour voir si le bouton droit de la souris a été cliqué et si oui, appelez le.ShowPopup
méthode.Bien sûr, cela suppose que le
Puisqu'à ce point de la Barre de Commande
MyListControlContextMenu
est pas défini, je définir le Menu dans un module séparé comme suit:Depuis trois fonctions ont été référencés, nous pouvons nous déplacer sur de les définir comme suit-
getText: Note, cette option nécessite une référence à la fois le nom de la de Commande de la Barre de menu nom ainsi que le nom de la légende de contrôle.
LookupDetailsFunction: Pour cet exemple, je vais créer une fonction shell et de renvoyer le texte "Hello World!".
DeleteRecordFunction: Pour cet exemple, je vais assurer le contrôle est toujours valide en les comparant la valeur null, et si elle est encore valide, exécute une requête pour supprimer l'enregistrement d'une table.
Remarque: Pour
LookupDetailsFunction
,DeleteRecordFunction
etgetText
fonctions, celles-ci doivent être à l'intérieur d'une portée publique pour fonctionner correctement.Enfin, la dernière étape consiste à tester le menu. Pour ce faire, ouvrez le formulaire, cliquez-droit sur la liste de contrôle et sélectionnez l'une des options du menu contextuel.
Éventuellement
button.FaceID
peut être utilisé pour indiquer un office connue icône à associer à chaque instance du menu de contrôle.J'ai trouvé Pillai Shyam du travail sur la création d'un FaceID Navigateur Add-In pour être très utile.
Références:
Microsoft
FaceID
DoCmd.CancelEvent
à l'intérieur de laIf
bloc dans la_MouseUp
gestionnaire pour ma liste de contrôle pour empêcher le défaut du menu clic-droit d'apparaître après mon menu personnalisé, également trouvé j'ai été frappé des erreurs de type pourcombo As CommandBarComboBox
, qui a été facilement résolu en optant pour le génériqueCommandBarControl
type. Mais en général, cela est clair et bien écrit en réponse, +1.Êtes-vous au courant de tout mécanisme d'organiser le rappel de code un peu mieux? Je n'aime pas tous ces modules couplés à mon code du formulaire, j'ai l'idéal serait d'appeler un public sous la forme de module, et aussi, éventuellement, de conclure dans un générique de module de classe.
Mécanisme? Pas de. L'emplacement du Code oui. Vous pouvez facilement le faire en plaçant des appels nécessaires dans le module à l'aide. Cette travaillé pour mon cas d'utilisation mieux que tout le reste était très contrôlé. Dans d'autres projets, j'ai déplacé le code dans la zone de prise d'appels.
En fait, j'ai eu un énorme mission depuis que j'ai posté ce commentaire, comme quelqu'un qui travaille habituellement avec PHP (c'est à dire une langue avec des fermetures) je ne peux pas croire à quel maladroit qu'il est, mais j'ai réussi à venir avec une satisfaisante abstraction impliquant un seul module et une classe. Je suis toujours polissage et de refactoring, mais je vais le mettre en ligne et de poster un lien ici quand je suis fait, pour les futurs visiteurs. Le plus difficile c'est lorsque l'objet pour lequel le menu contextuel est attaché sur un sous-formulaire, la détermination de la façon d'obtenir une référence à la forme correcte pour le rappel est un véritable pain PITA.
OriginalL'auteur Curtis Inderwiesche
Essayer Cette
Comme vous pouvez le voir, il va ajouter un élément en "mode Formulaire Popup" de la Barre de Commande et lorsque cet élément est cliqué, cela va de procédure de chargement qtrReport
Et utilisez cette fonction pour voir tous les Commandbars dans l'Accès
OriginalL'auteur THEn
Dans le but de remplacer le menu de raccourci par défaut avec un menu qui comprend les actions par défaut, plus vos actions personnalisées, vous devez créer un menu contextuel personnalisé qui comprend les actions par défaut. Il n'y a aucun moyen de prolonger le menu de raccourci par défaut.
Les menus contextuels dans Access 2003 et avant sont un type spécial de la barre d'outils. Vous créez de la même façon (plus ou moins) que vous créez une barre d'outils personnalisée. L'INTERFACE utilisateur est un peu bizarre, même si, comme il est un endroit spécial où vous les créez.
Pour commencer, cliquez-droit sur la barre d'outils dans votre front-end, Access MDB. Choisissez PERSONNALISER. Dans la liste des Barres d'outils, cochez les MENUS contextuels. Cela vous donnera une liste de tous les construit-dans les menus contextuels, sauf qu'en fait elles ne finissent par ressembler à ça dans la vraie utilisation. Par exemple, si un clic droit sur un formulaire, vous obtenez ce menu contextuel:
Maintenant, où est-ce menu dans le menu contextuel? Eh bien, celle-ci se trouve être la FORME de la VUE de la BARRE de TITRE du menu, même si elle apparaît à chaque fois que vous cliquez n'importe où ailleurs que sur un contrôle du formulaire. Donc, si c'est le menu que vous souhaitez modifier, vous pouvez le modifier en ajoutant des éléments de menu (glisser-déplacer).
Je pense que c'est vraiment mieux (comme je l'ai dit ci-dessus) pour créer un menu contextuel personnalisé qui réplique le menu intégré et ajouter vos améliorations parce que cela vous permet de conserver l'Accès au menu de raccourci par défaut, tout en ayant votre version personnalisée de l'utiliser quand vous le voulez. Dans ce cas, vous auriez besoin de démarrer un nouveau menu contextuel, et voici où l'INTERFACE est bizarre:
Vous cliquez sur le dernier choix dans le menu contextuel PERSONNALISÉ. Vous voyez, il descend dans un espace réservé. Vous ne pouvez pas faire glisser/déposer. Au lieu de cela, vous devez cliquez sur NOUVEAU dans la barre d'outils principale fenêtre d'édition et de créer un nouveau raccourci de la barre d'outils (donner le nom que vous voulez à votre menu contextuel personnalisé). Votre nouvelle barre d'outils affiche maintenant dans la liste des barres d'outils. Mettez-le en surbrillance et cliquez sur PROPRIÉTÉS, et de modifier le type de POPUP. Cela vous donnera une information d'avertissement que cette altération des changements à partir d'une barre d'outils pour afficher un menu contextuel. Vous pouvez ensuite fermer votre barre d'outils/menu contextuel de la feuille de propriétés, et maintenant, si vous cochez les MENUS contextuels de nouveau et de regarder le menu PERSONNALISÉ, vous verrez votre nouvellement créé menu. Maintenant, vous pouvez faire glisser et déposer les éléments de menu pour le menu intégré à votre nouveau menu -- mais ne laissez pas tomber sur le menu lui-même, mais sur l'espace réservé dans le volant à partir de l' > à la droite du nom du menu.
Vous pouvez faire glisser et déposer les options que vous voulez depuis n'importe quel menus ou barres d'outils à votre menu personnalisé.
Je suppose que vous savez comment utiliser le menu contextuel, il fait partie de la feuille de propriétés de tous les objets de formulaire.
Mise à JOUR 2009/05/21:
L'Accès officiel 2007 blog vient de poster un l'article de le faire par programmation dans Access 2007. En raison de l'interface ruban, il va y avoir des différences, mais certaines choses ne seront les mêmes.
David, C'est très utile dans la compréhension de la façon dont l'Accès se passe à propos des relations avec la Commande de la Barre. Cependant, je suis à la recherche de faire ce que vous avez dit par programmation.
C'est faisable par programmation, mais plutôt pointilleux, dans mon expérience. Dans VBE recherche de l'aide pour le programme "barres d'outils" et lire les y aider. Depuis les menus contextuels sont juste une forme de barre d'outils, vous pouvez utiliser les mêmes méthodes. Je ne voudrais pas faire ça moi-même. J'aimerais créer des menus personnalisés et ensuite afficher/masquer des éléments particuliers, comme le contexte nécessaire.
OriginalL'auteur David-W-Fenton