Home > Artikel > Ausgabe 7/2016 > Ribbon-Programmierung, Teil I

Ribbon-Programmierung, Teil I

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Mit Access 2007 sind die Menüleiste und die Symbolleisten von Access weggefallen. Die Befehle wurden stattdessen in das so genannte Ribbon übertragen. Das Ribbon bietet wesentlich mehr Möglichkeiten als seine Vorgänger, aber es ist auch aufwändiger zu programmieren. Dies gelingt nicht mehr einfach per VBA, sondern Sie müssen sich zusätzlich auch noch in XML einarbeiten – zumindest in die grundlegenden Techniken. Das ist aber kein Problem, denn wir zeigen Ihnen in dieser Artikelreihe alles, was Sie wissen müssen, um Ihren Anwendungen selbst definierte Ribbons hinzuzufügen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1607_Ribbon.accdb.

Das Ribbon-Konzept

Das grundlegende Konzept zur Programmierung eigener Elemente für das Ribbon sieht vor, dass das Aussehen fast vollständig mit einem XML-Dokument beschrieben wird. Dieses enthält an manche Stellen sogenannte Callback-Attribute, für die Sie die Namen von VBA-Prozeduren hinterlegen können, die beim Eintreten der Ereignisse, die das jeweilige Callback-Attribut auslösen, aufgerufen werden sollen. Dies ist also etwa vergleichbar mit der Programmierung von Formularen und den durch die verschiedenen Aktionen ausgelösten Ereignisprozeduren. Mit dem kleinen Unterschied, dass Sie Formulare mithilfe einer praktischen Entwurfsansicht auf der Benutzeroberfläche zusammenklicken können, während Sie die Benutzeroberfläche im oberen Bereich des Access-Fensters, das Ribbon, komplett in XML formulieren müssen.

Es gibt zwar mittlerweile einige Tools, die einem diese Arbeit zumindest teilweise abnehmen, aber wir wollen Ihnen zunächst die Grundlagen zum selbst ausprobieren vermitteln.

Auf diese Weise können Sie später auch den von einem Tool erzeugten Code verstehen und gegebenenfalls nach Ihren Wünschen anpassen.

Die Tabelle USysRibbons

Wenn Sie eine Ribbon-Definition zur Anwendung bringen wollen, also etwa so, dass beim Start der Access-Datenbank alle eingebauten Elemente des Ribbons verschwinden und durch einen eigenen Befehl ersetzt werden, benötigen Sie eine Tabelle, in der Sie den Namen dieser Ribbon-Definition sowie die Definition selbst im XML-Format speichern. Der Inhalt dieser Tabelle wird beim nächsten Öffnen der Access-Anwendung abgefragt. Die Ribbon-Definitionen stehen dann über den Namen an verschiedenen Stellen in der Anwendung zur Auswahl:

  • als Anwendungsribbon, also zur Anzeige mit dem Öffnen der Anwendung,
  • als Formularribbon, das nach dem Öffnen eines Formulars angezeigt wird und mit diesem wieder geschlossen wird und
  • als Berichtsribbon, das gleichzeitig mit der Anzeige eines Berichts eingeblendet wird.

Ribbons on the fly

Theoretisch besteht auch die Möglichkeit, Ribbons ad hoc per Code zusammenzustellen und diese anzuzeigen. Dies gelingt jedoch nur in Zusammenhang mit dem Öffnen eines Formulars, wie wir später in dieser Reihe zeigen werden.

Bilder im Ribbon

Wenn Sie Icons in Ihrem benutzerdefinierten Ribbon abbilden möchten, was empfehlenswert ist, um eine ergonomisch und optisch ansprechende Anwendung zu erhalten, benötigen Sie eine weitere Tabelle, die aber in den neueren Access-Versionen (ab 2010) standardmäßig in einer neuen .accdb-Datei vorhanden ist. Diese Tabelle heißt MSysResources und ist in der Regel nicht zu sehen, da diese als ausgeblendet markiert ist. Auch die Tabelle USysRibbons wird wegen ihres Präfix USys... nicht standardmäßig im Navigationsbereich angezeigt, sondern erst dann, wenn Sie diese über die Access-Optionen einblenden. Außerdem benötigen Sie zur Anzeige von Bilddateien, die üblicherweise im .png-Format verwendet werden, noch einige Prozeduren, die wir aber in den Beispieldateien zur Verfügung stellen.

Ein erstes Ribbon

Beginnen wir jedoch mit den Basics, und zwar mit dem Anlegen einer einfachen Ribbon-Definition, die wir anschließend in der Anwendung sichtbar machen. An dieser Stelle kommt es darauf an, den grundlegenden Ablauf zu verinnerlichen. Später dann kommen wir auf fortgeschrittenere Ribbon-Techniken zu sprechen.

Tabelle USysRibbons anlegen

Als Erstes legen Sie eine neue Tabelle mit den folgenden Feldern an (siehe Bild 1):

Entwurf der Tabelle USysRibbons

Bild 1: Entwurf der Tabelle USysRibbons

  • ID: Primärschlüsselfeld der Tabelle
  • RibbonName: Name des Ribbons, der später als Eigenschaft für die anzuzeigende Ribbon-Definition ausgewählt werden soll
  • RibbonXML: XML-Definition des Ribbons

Speichern Sie diese Tabelle dann unter dem Namen USysRibbons. Wenn Sie die Tabelle nun schließen und wieder öffnen wollen, werden Sie feststellen, dass diese nicht im Navigationsbereich auftaucht. Um den Eintrag für diese Tabelle einzublenden, öffnen Sie die Navigationsoptionen, und zwar mit einem Rechtsklick auf den Titel des Navigationsbereichs. Aus dem nun erscheinenden Kontextmenü wählen Sie den Eintrag Navigationsoptionen... aus. Es erscheint der Dialog aus Bild 2, in dem Sie die Option Systemobjekte anzeigen aktivieren. Nach dem Schließen des Dialogs taucht dann auch die Tabelle USysRibbons im Navigationsbereich auf.

Einblenden der Systemtabellen

Bild 2: Einblenden der Systemtabellen

Ribbon-Definition für ein einfaches Ribbon

Eine der einfachsten Ribbon-Varianten besteht aus lediglich einem tab-Element, einem group-Element und einem button-Element. Das waren die sichtbaren Elemente, es gibt noch ein paar weitere, die nur im XML-Dokument auftauchen und für die Struktur verantwortlich sind. Geben Sie nun den folgenden Code in das Feld RibbonXML eines neuen Datensatzes der Tabelle USysRibbons ein und weisen Sie dem Feld RibbonName den Wert Name zu:

label="Beispieltab">

label="Beispielgruppe">