Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2008.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie alles über den Einsatz von Kontextmenüs in Access-Datenbanken.

Techniken

Kontextmenüs, VBA

Voraussetzungen

Access 2000 und älter

Beispieldateien

Kontextmenues.mdb, KontextmenuesMitA2007.mdb

Shortlink

638

Kontextmenüs von A bis Z

André Minhorst, Duisburg

Kontextmenüs sind die beste Möglichkeit, schnell die zum aktuell unter dem Mauszeiger befindlichen Element passenden Befehle anzuzeigen und auszuwählen. Viele Benutzer verwenden Kontextmenüs einfach nicht, weil sie nichts mit der rechten Maustaste anzufangen wissen, und auch Entwickler lassen sie links liegen, weil sie die Chancen nicht erkennen. Wir zeigen, wie Sie wo mit dem Kontextmenü für perfekte Ergonomie sorgen können.

Grundsätzlich muss man bei Kontextmenüs zwei Wege der Erstellung unterscheiden: Bis Access 2003 gibt es einen komfortablen Dialog für diese Aufgabe, den wir zu Beginn besprechen. Mit Access 2007 hat Microsoft jedoch das Ribbon eingeführt und zwar die Kontextmenüs verschont, aber die Menü- und Symbolleisten sowie den Anpassen-Dialog zum einfachen Erstellen dieser Elemente rausgeworfen (vielleicht kommt er mit der nächsten Office-Version zurück - wer weiß?).

Ab Access 2007 ist man somit auf alternative Methoden angewiesen, die in erster Linie auf den Einsatz von VBA hinauslaufen. Der zweite Teil dieses Beitrags beschäftigt sich mit diesem Thema. Schließlich gibt es einige Gelegenheiten für den Einsatz von Kontextmenüs, die wir im dritten Teil dieses Beitrags vorstellen.

Kontextmenüs per Anpassen-Dialog

Der Anpassen-Dialog ist die bequemste Variante zum Erstellen von Menü- und Symbolleisten und auch für Kontextmenüs. Dieser Dialog ist nur bis einschließlich Access 2003 verfügbar und lässt sich, wie treffend, über den Eintrag Anpassen des Kontextmenüs der Menü- und Symbolleisten aufrufen.

Neues Kontextmenü anlegen

Ein neues Kontextmenü legen Sie ausgehend vom Anpassen-Dialog wie folgt an:

  • Klicken Sie auf der Registerseite Symbolleisten auf den Eintrag Neu und tragen Sie im nun erscheinenden Fenster den Namen ein, zum Beispiel MeinKontextmenue (s. Abb. 1).
  • Die neue Symbolleiste sieht zunächst nicht nach Kontextmenü aus. Bevor wir das ändern, fügen wir noch zwei oder drei Steuerelemente hinzu. Wechseln Sie im Anpassen-Dialog auf die Registerseite Befehle und ziehen Sie aus der rechten Liste den Eintrag Benutzerdefiniert entsprechend der gewünschten Anzahl Steuerelemente in die Symbolleiste.
  • Die Symbolleiste sieht nun wie in Abb. 2 aus. Wechseln Sie nun zurück zur Registerseite Symbolleisten des Anpassen-Dialogs, stellen Sie sicher, dass der Eintrag MeinKontextmenue ausgewählt ist, und klicken Sie auf die Schaltfläche Eigenschaften.
  • Dies öffnet den Dialog aus Abb. 3. Ändern Sie hier die Eigenschaft Typ auf Popup. Nachdem Sie die folgende Meldung bestätigt haben, verschwindet die Symbolleiste vom Bildschirm und ist auch in der Liste der Symbolleisten im Anpassen-Dialog nicht mehr zu finden.
abb001.tif

Abb. 1: Anlegen einer neuen Symbolleiste, die einmal ein Kontextmenü werden soll

abb004.tif

Abb. 2: Symbolleiste mit Schaltflächen

abb002.tif

Abb. 3: Umwandeln der Symbolleiste in ein Kontextmenü

Access hat das Kontextmenü in eine übergeordnete Symbolleiste namens Kontextmenü verschoben. Wenn Sie den gleichnamigen Eintrag in der Liste der Symbolleisten aktivieren, erscheint eine lange Leiste mit dem Eintrag Benutzerdefiniert, der auch unser Kontextmenü mit den drei Beispielschaltflächen enthält (s. Abb. 4).

abb003.tif

Abb. 4: Ein Kontextmenü unter vielen

Sie brauchen nun nur noch die Eigenschaften der Schaltflächen, wie das Symbol oder die Beschriftung, einzustellen und festzulegen, welche Funktion Access beim Mausklick auf eine Schaltfläche auslösen soll.

Dazu zeigen Sie wiederum das Kontextmenü der gewünschten Schaltfläche an und wählen den Eintrag Eigenschaften aus (s. Abb. 5). Wichtig ist hier vor allem die Eigenschaft Bei Aktion, der Sie den Namen einer VBA-Funktion mit führendem Gleichheitszeichen und abschließendem Klammernpaar zuweisen. Diese Funktion muss in einem Standardmodul als öffentliche Funktion deklariert sein, für das Beispiel aus der Abbildung also etwa so:

abb005.tif

Abb. 5: Eigenschaften einer Schaltfläche bearbeiten

Public Function Meldungsfenster()

    MsgBox "Ich wurde vom Kontextmenü µ

    aufgerufen."

End Function

Kontextmenü anzeigen

Nun müssen wir das Kontextmenü nur noch anzeigen. Am einfachsten erledigt man dies, indem man den Namen des Kontextmenüs der Eigenschaft Kontextmenüleiste eines Formulars, Berichts oder der darin enthaltenen Steuerelemente zuweist und dann die richtige Stelle mit der rechten Maustaste anklickt. Für den Moment wollen wir uns die Erstellung zusätzlicher Elemente sparen und dies einfach per VBA erledigen.

Dafür stellt Access einige Objekte und Methoden bereit. Die CommandBars-Auflistung enthält alle Symbolleisten (zu denen auch die Kontextmenüs gehören) und gibt einen Verweis auf den gewünschten Eintrag zurück, wenn man den Namen der Kontextmenüleiste als Index angibt (dies ginge auch über einen numerischen Index). Die Methode ShowPopup zeigt schließlich die Kontextmenüleiste an, und zwar an der Stelle des Mauszeigers (s. Abb. 6). Diese Anweisung setzen Sie im Direktfenster des VBA-Editors ab, den Sie von Access und auch vom VBA-Editor aus mit der Tastenkombination Strg + G einblenden können.

abb006.tif

Abb. 6: Anzeigen eines Kontextmenüs per VBA

Commandbars("MeinKontextmenue").ShowPopup

Ein Klick auf den ersten Eintrag des Kontextmenüs liefert schließlich das erwartete Meldungsfenster.

Eingebaute Befehle

Wir sind im ersten Ansatz davon ausgegangen, dass man normalerweise komplett benutzerdefinierte Kontextmenüs entwirft. Dies ist natürlich nicht immer der Fall; manchmal möchte man vielleicht auch einfach ein paar eingebaute Befehle, wie etwa zum Drucken oder Speichern des aktuellen Objekts, verfügbar machen. Solche Befehle fügen Sie genau wie die benutzerdefinierten über die Registerseite Befehle des Anpassen-Dialogs hinzu.

Eingebaute Symbole

Ein wenig Farbe bringen Sie mit den zur Verfügung stehenden Symbolen in das Kontextmenü. Mit den Kontextmenüeinträgen der Menübefehle können Sie im Anpassen-Modus die Symbole vorhandener Befehle kopieren und den benutzerdefinierten Elementen hinzufügen. Weiter unten erfahren Sie, wie Sie auch benutzerdefinierte Symbole zu den Schaltflächen von Kontextmenüs hinzufügen können.

Kontextmenüs unter Access 2007

Nachdem Microsoft den Dialog zum Anpassen von Menüs, Symbolleisten und Kontextmenüs mit Access 2007 gestrichen hat, sind Sie dort beim Erstellen von Kontextmenüs auf einen kleinen Trick angewiesen - oder Sie verwenden direkt VBA.

Die Geschichte mit dem Trick sieht so aus: Sie können mit bestimmten Einstellungen versehene .mdb-Datenbanken unter Access 2007 so öffnen, dass diese ihre Menü- und Symbolleisten genau so wie unter einer älteren Access-Version anzeigen. Wir haben solch ein Exemplar als Beispieldatenbank hinzugefügt (KontextmenuesMitA2007.mdb), das beim Start eine Menüleiste anzeigt und auch das Anzeigen des Anpassen-Dialogs per Kontextmenü zulässt (s. Abb. 7). Hiermit können Sie auch unter Access 2007 Kontextmenüs erstellen. Was aber haben Sie davon, wenn Sie diese in einer .accdb- und nicht in einer .mdb-Datei brauchen? Nun, Sie können die Kontextmenüs einfach in die .accdb-Datenbank importieren.

abb007.tif

Abb. 7: Der Anpassen-Dialog ist auch unter Access 2007 noch verfügbar.

Dazu müssen Sie nur den Ribbon-Befehl Externe Daten|Importieren|Access anklicken, die Quelldatenbank (also die .mdb-Datei) auswählen, im Dialog Objekte importieren mit der Schaltfläche Optionen die erweiterten Optionen anzeigen und dort die Option Menüs und Symbolleisten aktivieren (s. Abb. 8).

abb008.tif

Abb. 8: Importieren von Kontextmenüs aus einer .mdb-Datei in eine Access 2007-Datenbank

Mit der oben vorgestellten ShowPopup-Methode können Sie nun schnell prüfen, ob die mit dem Anpassen-Dialog zusammengestellten Kontextmenüs erfolgreich importiert wurden.

Kontextmenüs von älteren Access-Versionen importieren

Wenn Sie noch eine ältere Version von Access verwenden und Kontextmenüs in Access 2007 benötigen, können Sie diese auf die gleiche Art und Weise importieren.

Kontextmenüs per VBA erstellen

Am effizientesten und am flexibelsten ist die Erstellung der Kontextmenüs per VBA. Das liegt auch daran, dass wir eine Menge nützlicher Funktionen zusammengetragen haben, die etwa das codegesteuerte Hinzufügen benutzerdefinierter Images erlauben. VBA bietet aber auch viel mehr Möglichkeiten: So können Sie damit beispielsweise zur Laufzeit Einträge zu Kontextmenüs hinzufügen, um diese etwa in Abhängigkeit von den in den Tabellen der Datenbank enthaltenen Daten zu füllen - aber sehen Sie doch einfach selbst.

Die CommandBars-Auflistung

Die CommandBars-Auflistung gibt es in zwei Ausführungen: erstens im Application-Objekt von Access und zweitens in der Office-Bibliothek, die Sie aber nur benötigen, wenn Sie mit den darunter liegenden Elementen arbeiten möchten - und das ist im Folgenden der Fall, weshalb Sie zunächst einen Verweis auf die Bibliothek Microsoft Office xx.0 Object Library anlegen.

Als Erstes geben wir die komplette Liste der Kontextmenüs der Anwendung aus, was prinzipiell dem Ausgeben aller CommandBars-Einträge entspricht, sich aber auf solche Elemente beschränkt, deren Eigenschaft Type den Wert 2 für msoBarTypePopup aufweist:

Public Sub KontextmenuesAusgeben()

Dim cbr As CommandBar

For Each cbr In CommandBars

If cbr.Type = 2 Then

    Debug.Print cbr.Name

End If

Next cbr

End Sub

Steuerelemente in Kontextmenüs

Die in Kontextmenüs enthaltenen Steuerelemente erhalten Sie über die Controls-Auflistung eines Commandbar-Elements.

Die folgende angepasste Version der obigen Routine gibt nur Kontextmenüs inklusive der Beschriftungen und Typen der enthaltenen Steuerelemente aus - zur besseren Übersicht um zwei Leerzeichen eingerückt:

Public Sub KontextmenuesAusgeben()

Dim cbr As CommandBar

Dim cbc As CommandBarControl

For Each cbr In CommandBars

If cbr.Type = 2 Then

Debug.Print cbr.Name

For Each cbc In cbr.Controls

Debug.Print , cbc.Caption

Next cbc

End If

Next cbr

End Sub

Die Ausgabe für unser kleines von Hand erstelltes Kontextmenü sieht damit etwa so aus:

MeinKontextmenue

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Tipps und Tricks

Trojanische Kontextmenüs am Beispiel Excel

Auswahlfelder im Ribbon

Vertikale Menüleisten

Access 2007: Bilder und Schaltflächen

Platzhalterauswahl per Kontextmenü

Tipps und Tricks

Dynamische Ribbons

Bilder skalieren

TreeView-Konfigurator

Listenfeld und Details in einem Formular

Listenfelder von A-Z

Tipps und Tricks

Validieren mit Klasse

Access-Optionen gestern und heute

Bilder on the fly

Tipps und Tricks

Dynamische Menüs mit VBA

Formularposition speichern und wiederherstellen

Modale Dialoge mal anders

Mehrsprachige Anwendungen, Teil 2

Benutzerverwaltung

Meldungsfenster im Eigenbau

Erweitern des VBA-Editors

Platzbedarf für Text ermitteln

Anwendungsoptionen in Tabellen speichern

Arrays, Collections und Dictionarys

Das Append-Only-Memofeld

Nachschlage- und mehrwertige Felder

© 2003-2015 André Minhorst Alle Rechte vorbehalten.