Ein Menü ist ein wichtiges Element bei der Steuerung einer Softwareanwendung. Unter Office gibt es seit der Version 2007 eine neue Variante der bis dato verwendeten Menü- und Symbolleisten: das Ribbon. Auch wenn es noch Schlupflöcher gibt, die den Einsatz der alten Menüs in .mdb-Dateien unter Access 2007 erlauben, werden Sie sich als Access-Entwickler früher oder später mit dem Programmieren des Ribbons beschäftigen müssen. Wir zeigen, wie Sie das Ribbon mit Leben füllen.
“Sie werden sich mit dem Programmieren des Ribbons beschäftigen müssen” – das hört sich sehr danach an, als ob die Beschäftigung mit dem Ribbon nicht unbedingt auf uneingeschränkte Gegenliebe stößt.
In der Tat ist es wohl mit vielem Neuen, für das man lieb gewonnene Gewohnheiten und Techniken aufgeben muss: Sie können in wenigen Sekunden ganze Menüs und Symbolleisten mit dem Anpassen-Dialog zusammenklicken Sie haben tolle Klassen, die Menüstrukturen aus Tabellen einlesen, um diese zur Laufzeit zusammenzustellen Vergessen Sie es, denn nun heißt es wie bei Peter Fox: "Hey, alles glänzt, so schön neu!"
In der Tat bietet das Ribbon ganz andere Möglichkeiten als die alten Menüs. So kann man Befehle zu dritt untereinander anordnen oder wahlweise einen Befehl mit einer großen Schaltfläche auf dem gleichen Platz anzeigen und es gibt eine ganze Reihe neuer Steuerelemente. Für den Entwickler am wichtigsten ist aber die Technik, und auch die ist rundum erneuert, was sich vor allem in der Definition des Aussehens des Ribbons per XML widerspiegelt.
Im gleichen XML-Dokument, das auch die äußerlichen Merkmale festlegt, geben Sie auch an, was beim Verwenden der enthaltenen Steuerelemente geschehen soll oder ob bereits der Aufbau des Ribbons teilweise durch VBA-Routinen unterstützt werden soll.
Für alle Neulinge in der Ribbon-Welt sei an dieser Stelle vermerkt, dass eine ausführliche Einführung wohl leicht ein komplettes Heft wie das vorliegende füllen könnte. Wir können daher nicht bei Adam und Eva anfangen, lassen Sie aber auch nicht im Ribbon … – Verzeihung, Regen stehen. Im Buch Access 2007 – Das Grundlagenbuch für Entwickler (ISBN 978-3-8273-2459-7) gibt es ein komplettes Kapitel von 60 Seiten zu diesem Thema, das unter http://www.access-entwicklerbuch.de/2007/download/AEB2007_Kapitel12.pdf kostenlos zum Download bereitsteht. Dort erhalten Sie die für das Verständnis dieses Beitrags notwendigen Grundkenntnisse wie etwa zum Aufbau eines XML-Dokuments zur Definition eines Ribbons, die wir an dieser Stelle aus Platzgründen nicht wiederholen möchten.
In diesem Beitrag wollen wir die Grundlagen für den Einsatz der sogenannten Callback-Funktionen liefern und mit einigen Beispielen zeigen, wie Sie das Ribbon nicht nur als Ergebnis eines statischen XML-Konstrukts verwenden, das beim Klicken auf die Steuerelemente die eine oder andere Funktion aufruft. Stattdessen erfahren Sie hier, welche Callback-Funktionen wann aufgerufen werden und wie Sie selbst die Aktualisierung des Ribbons auslösen können.
In loser Folge werden wir Ihnen dann in weiteren Beiträgen das Ribbon und die interessantesten Techniken näherbringen – zum Beispiel, indem wir Ihnen zeigen, wie Sie die verschiedenen Typen von Kombinationsfeldern füllen oder wie Sie am einfachsten Bilder im Ribbon anzeigen.
Aufbau der Beispieldatenbank
Sie finden die nachfolgend beschriebenen Beispiele in der Beispieldatenbank. Wenn Sie diese dennoch selbst nachvollziehen möchten, hier einige kurze Hinweise:
- Sie benötigen eine Tabelle namens USysRibbons mit den Feldern ID (Autowert), Ribbonname (Text) und RibbonXML (Memo). Darin speichern Sie die Ribbon-Definitionen.
- Die Tabelle USysRibbons ist nach dem Speichern bei Verwendung von Standardeinstellungen nicht mehr sichtbar, weil sie infolge der Verwendung des Präfix USys eine Systemtabelle wird. Sie brauchen diese nicht sichtbar zu machen. Kopieren Sie stattdessen das Formular frmRibbons aus der Beispieldatenbank in Ihre Datenbank. Damit können Sie die Ribbon-Definitionen prima anpassen.
- Sie benötigen ein Modul namens mdlRibbons, das die Callback-Funktionen für die Ribbons aufnimmt.
- Wenn Sie benutzerdefinierte Bilder im Ribbon anzeigen möchten, die Sie in einer Tabelle in der Datenbank speichern (was empfehlenswert ist), importieren Sie auch noch das Modul mdlRibbonImages. Es enthält eine Methode PicFromField, mit der Sie in OLE-Feldern gespeicherte Images leicht in ein StdPicture-Objekt füllen können, das dann für die Anzeige des Bildes im Ribbon verwendet werden kann.
- Um Bilder in einer Tabelle der Datenbank zu speichern, um diese für das Ribbon bereitzustellen, brauchen Sie erstens eine passende Tabelle. Diese nennen wir USysImages; Sie können sich diese von der Beispieldatenbank holen und in Ihre eigene Anwendung kopieren.
- Irgendwie müssen die Bilddateien ja auch noch in die Tabelle USysImages gelangen. Das erledigen Sie über die Routine ImageHinzufuegen und einige abhängige Funktionen aus dem Modul mdlTools der Beispieldatenbank. Die Routine rufen Sie einfach auf, indem Sie diese im VBA-Fenster markieren und auf F5 drücken – es erscheint dann ein Datei öffnen-Dialog, mit dem Sie auch gleich mehrere Bilder auf einen Rutsch importieren können. Beachten Sie dabei, dass die Bilder möglichst transparente Bereiche untersützen sollten und die Zieltabelle USysImages vorhanden sein muss.
- Fügen Sie Ihrer Datenbank einen Verweis auf die Bibliothek Microsoft Office 12.0 Object Library hinzu.
- Stellen Sie in den Access-Optionen im Bereich Erweitert die Option Fehler in Benutzeroberflächen von Add-Ins anzeigen auf Ja ein.
Ribbons testen
Normalerweise müssen Sie, das können Sie in der oben angeführten Literatur im Detail nachlesen, die Datenbankanwendung jeweils mindestens einmal neu starten, wenn Sie eine änderung an der Ribbon-Definition vorgenommen haben. Unser Testformular frmRibbons verkürzt diesen Aufwand merklich: Sie brauchen dort nur die gewünschte Ribbon-Definition einzutragen (die dann ja ohnehin in der Tabelle USysRibbons landet, sofern diese vorliegt) und auf die Schaltfläche Anzeigen zu klicken – schon zeigt Access die Ribbon-Anpassungen an (siehe Bild 2).
Bild 1: Ribbon mit einer einfachen Schaltfläche
Bild 2: Das Formular frmRibbons hilft beim Testen neuer Ribbon-Definitionen.