Kontextmenüs Formularen, Berichten und Steuerelementen zuordnen
Legen Sie an einer Stelle fest, welches Formular, welcher Bericht, welches Steuerelement oder welche Art von Steuerelement welches Kontextmenü des Menübandmodells zeigt, statt die Eigenschaft Kontextmenüleiste Objekt für Objekt einzustellen.
Voraussetzungen: WKL Forms Object Library 1.53 oder höher, eine ACCDB (die Zuordnungen werden in der Entwurfsansicht geschrieben).
Lösungsüberblick
Die Seite Zuordnung des Menüband-Designers listet die Formulare und Berichte der Datenbank auf. Zu jedem Objekt zeigt
sie das Objekt selbst, jedes Steuerelement, das ein Kontextmenü tragen kann, und eine Zeile je Art von Steuerelement
(alle Textfelder, alle Kombinationsfelder …), jeweils mit dem Menü, das es jetzt hat, und dem Menü, das es nach OK
erhält. Die Zuordnungen gehören zum Menübandmodell; nach OK schreibt WKL Ribbon sie in die Eigenschaft
Kontextmenüleiste der Objekte (WklRibbon.ApplyAssignments).
Sie öffnen die Seite über das Menü Datenbanktools › Add-Ins › WKL Shortcut Menu Designer, über die Seitenliste des Menüband-Designers oder aus VBA:
CreateObject("WklForms.Ribbon").ShowAssignments
Zur Laufzeit müssen die Menüs selbst vorhanden sein: Ein Menüband des Modells legt sie beim Laden an; eine Datenbank
ohne ein solches Menüband ruft beim Start EnsureMenus auf.
Umsetzung
- Legen Sie auf der Seite Kontextmenüs das Menü an, zum Beispiel
ctxKundemit den Einträgen, die die Formulare brauchen. - Wählen Sie auf der Seite Zuordnung das Formular
frmKunde. Wählen Sie in der Zeile Textfeld (Art) das MenüctxKunde: Jedes Textfeld des Formulars erhält es. Wählen SiectxKundeauch in der Zeile des KombinationsfeldscboOrt. - Wählen Sie den Bericht
rptKundeund dortctxKundein der Zeile des Berichts selbst. - Schließen Sie mit OK. Die Spalte Nach OK hat gezeigt, was geschrieben wird; die Formulare und Berichte werden verborgen in der Entwurfsansicht geöffnet und dort gespeichert, wo sich etwas ändert.
- Legen Sie in einer Datenbank ohne Menüband des Modells die Menüs beim Start an:
Private Sub Form_Load()
' The context menus are temporary command bars: Access forgets them when it closes.
CreateObject("WklForms.Ribbon").EnsureMenus
End Sub
Hinweise
- Welche Zuordnung gilt. Die Zeile eines benannten Steuerelements hat Vorrang vor der Zeile seiner Art. Wählen Sie für eine Stelle, der das Modell ein Menü zugeordnet hatte, kein Menü, wird das Menü dort entfernt. Ein Kontextmenü, das das Modell nicht kennt (vom eigenen Code der Anwendung angelegt), wird nie entfernt, sondern nur dort ersetzt, wo das Modell ein anderes zuordnet.
- Geöffnete Objekte werden übersprungen. Ein Formular oder Bericht, das bzw. der beim Schließen des Designers geöffnet ist, bleibt unverändert; eine Meldung nennt es. Schließen Sie das Objekt und öffnen Sie den Designer erneut, oder rufen Sie
CreateObject("WklForms.Ribbon").ApplyAssignmentsauf. - ACCDE. Eine ACCDE hat keine Entwurfsansicht: Die Zuordnungen werden in der ACCDB geschrieben, und die daraus erstellte ACCDE übernimmt sie. In einer ACCDE löst
ApplyAssignmentsden FehlerwkeNotAvailableaus. - Build-Werkzeug. Ist in access-app.json
ribbonModelangegeben, schreibt der Build die Zuordnungen, nachdem er Formulare und Berichte geladen hat. Nennt eine Zuordnung ein Formular oder einen Bericht, das bzw. den der Build nicht erstellt, bricht der Build ab. - Bilder. Einträge zeigen Office-Bilder (
imageMso) und Bilder aus der Bildergalerie der Datenbank (mit 16 × 16 Pixeln auf der Menüfarbe gezeichnet).