Das Anzeigen von Bildern im Ribbon ist keine große Kunst – Sie benötigen dazu ein paar bereits vorliegende Prozeduren, welche die Bilder aus der Tabelle USysResources so umwandeln, dass diese leicht der jeweiligen Ribbon-Definition zugewiesen werden können. Aber in der Benutzeroberfläche von Access gibt es ja auch noch die Kontextmenüs. Und auch diese lassen sich mit Icons ausstatten – auch wenn dies noch einen Zwischenschritt mehr erfordert. Dieser Artikel zeigt, wie Sie die Schaltflächen in Kontextmenüs mit Icons optisch aufwerten und so die Ergonomie verbessern.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 2002_KontextmenueMitIcons.accdb.
Bilder zur Tabelle USysResources hinzufügen
Die Tabelle MSysResources wird von Access zum Speichern von Bildern verwendet, die Sie im Entwurf von Formularen und Berichten als eigenständige Bilder oder als Icons von Schaltflächen hinzufügen. Diese Tabelle soll auch der Speicherort für die von uns in Kontextmenüs verwendeten Bilder sein. Wir wollen also als Erstes einmal ein paar Bilddateien zu dieser Tabelle hinzufügen. Die einfachste Methode ist der Weg über den Formularentwurf: Hier wählen Sie einfach den Ribbon-Eintrag Entwurf|Steuerelemente|Bild einfügen|Durchsuchen… aus (siehe Bild 1).
Bild 1: Hinzufügen von Bilddateien
Mit dem nun erscheinenden Dialog Grafik einfügen navigieren Sie zu Ihrem Verzeichnis mit Bilddateien (wir verwenden die Icons von www.iconexperience.com) und wählen die gewünschte Bilddatei aus (siehe Bild 2).
Bild 2: Einfügen von Bilddateien
Wenn Sie danach erneut den Eintrag Bild einfügen aufklappen, finden Sie dort bereits das neu hinzugefügte Bild vor (siehe Bild 3).
Bild 3: Die Bilddatei ist angekommen.
Das zu diesem Zweck angelegte Formular können Sie wieder schließen, ohne es zu speichern – es diente nur dazu, den Ribbonbefehl zum Einfügen der Bilder in die Tabelle MSysResources zu vereinfachen.
Die Tabelle MSysResources
Nun schauen wir uns an, wo wir dieses Bild in der Tabelle MSysResources finden. Um diese Tabelle zu öffnen, müssen wir sie zuerst sichtbar machen. Dazu klicken Sie mit der rechten Maustaste auf die Titelzeile des Navigationsbereichs und wählen dort den Eintrag Navigationsoptionen… aus. Im nun erscheinenden Dialog Navigationsoptionen aktivieren Sie im Bereich Anzeigeoptionen die beiden Optionen Ausgeblendete Objekte anzeigen und Systemobjekte anzeigen (siehe Bild 4). Danach werden die Systemtabellen, die mit MSys… beginnen, angezeigt, darunter auch die Tabelle MSysResources.
Bild 4: Aktivieren der Anzeige von System- und ausblendeten Objekten
Wenn Sie diese öffnen, finden Sie dort neben einer Datei mit dem Namen Office Theme die soeben hinzugefügten Bilddateien vor (siehe Bild 5). Im Folgenden müssen Sie nur wissen, welcher Wert für die Bilder in der Spalte Name angelegt wurde – also beispielsweise add, ok oder close.
Bild 5: Die Tabelle MSysResources mit den hinzugefügten Bilddateien
Kontextmenü mit Bildern anzeigen
Der erste Schritt zum Anzeigen von Kontextmenüs per VBA ist, dass wir einen Verweis auf die Bibliothek Microsoft Office x.0 Object Library hinzufügen. Diese stellt nämlich das Office-weite Objektmodell für das Anzeigen von Menüleisten bereit. Diesen Verweis finden Sie in aktuelleren Access-Versionen wie Access 2016 an versteckter Stelle. Dazu öffnen Sie den Verweise-Dialog vom VBA-Editor aus, und zwar über den Menübefehl Extras|Verweise. Im Verweise-Dialog wählen Sie dann den Eintrag office aus, der erst beim nächsten Anzeigen des Dialogs als Microsoft Office x.0 Object Library dargestellt wird (siehe Bild 6).
Bild 6: Hinzufügen der Office-Bibliothek zu den Verweisen
Herkömmliches Kontextmenü anzeigen
Nun legen wir ein neues, leeres Formular an, dem wir für das Ereignis Bei Maustaste ab eine Ereignisprozedur hinzufügen. Diese füllen wir mit einigen Anweisungen, die dafür sorgen, dass ein einfaches Kontextmenü angezeigt wird (siehe Listing 1).
Private Sub Detailbereich_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim cbr As Office.CommandBar Dim cbc As Office.CommandBarButton If Button = acRightButton Then On Error Resume Next CommandBars("Kontextmenue").Delete On Error GoTo 0 Set cbr = CommandBars.Add("Kontextmenue", msoBarPopup, False, True) With cbr Set cbc = .Controls.Add(msoControlButton) With cbc .Caption = "OK" .onAction = "=OK()" End With .ShowPopup End With End If End Sub
Listing 1: Prozedur, die beim Herunterdrücken einer Maustaste ausgelöst wird
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: