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 3/2015.

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

Dynamische Formular-Ribbons

Wenn Sie ein anwendungsweites Ribbon mit dynamischen Elementen versehen wollen, kommen Sie nicht um den Einsatz von Callback-Prozeduren herum. Sie können also nicht mal eben ein neues Ribbon definieren und anzeigen. Anders sieht dies in Formularen aus: Hier können Sie sehr wohl schnell eine neue Ribbon-Definition erstellen und dieses auch direkt anwenden. Damit können Sie dann etwa Ribbons bauen, die direkt auf Ereignisse oder Eigenschaften des Formulars reagieren – ohne excessiven Einsatz von Callback-Funktionen.

Dies ermöglicht die Eigenschaft RibbonName eines Formulars. Diesen können Sie auch zur Laufzeit ändern oder einstellen. Wir schauen uns dies an einem Dummy-Formular an, dem wir verschiedene Ribbon-Definitionen zuweisen und diese durch einen Klick auf eine Schaltfläche anwenden. Später betrachten wir dann noch einen praktischen Anwendungsfall für diese Technik.

Ribbon aktualisieren

Im Beispiel benötigen wir noch die Tabelle USysRibbons, die üblicherweise zum Speichern der Ribbon-Definitionen benötigt wird. Diese sieht wie in Bild 1 aus und enthält bereits eine kleine Ribbon-Definition. Für die im Formular enthaltenen Programmierungen benötigen wir zuvor noch einen Verweis auf die Bibliothek Microsoft Office x.0 Object Library (s. Bild 2). Anschließend erstellen Sie ein neues Formular, das an die Tabelle USysRibbons gebunden ist. Das Formular soll alle Felder dieser Tabelle anzeigen. Unter den gebundenen Textfeldern platzieren Sie eine Schaltfläche namens cmdRibbonAktualisieren. Dieses soll die im Textfeld RibbonXML enthaltene Ribbon-Definition direkt umsetzen und das entsprechende Ribbon anzeigen.

Die Tabelle USysRibbons speichert die Ribbon-Definitionen

Bild 1: Die Tabelle USysRibbons speichert die Ribbon-Definitionen

Verweis auf die Office-Bibliothek

Bild 2: Verweis auf die Office-Bibliothek

Diese Prozedur sieht wie folgt aus und erledigt drei Dinge: Sie erzeugt einen temporären Namen für das Ribbon, für den wir praktischerweise einen GUID-Wert nutzen. Dieser ist auf jeden Fall eindeutig, so kann es nicht geschehen, dass wir zwei Ribbon-Definitionen mit dem gleichen Namen temporär in der Datenbank speichern.

Die Funktion zum Erstellen der GUID finden Sie im Modul mdlTools – sie heißt CreateGUID. Die GUID speichert die Prozedur in der Variablen strGUID. Damit laden wir nun die Ribbon-Definition in die Datenbank. Dies erledigen wir mit der Funktion LoadCustomUI, die zwei Parameter erwartet: den Namen des Ribbons sowie die Ribbon-Definition selbst.

Danach liegt die Ribbon-Definition in der Liste der Ribbon-Definitionen vor, die Sie etwa unter Access 2013 in den Access-Optionen über die Eigenschaft Name des Menübands auswählen können (wenn Sie diese Änderung über die Access-Optionen oder per VBA durchführen, wirkt sie sich allerdings erst beim nächsten Start der Anwendung aus).

Allerdings können wir den Namen der Ribbon-Definition der Eigenschaft RibbonName des Formulars zuweisen, wodurch auch gleich die entsprechende Ribbon-Anpassung geladen wird. Diese bleibt nun so lange erhalten, bis das Formular den Fokus verliert (also beispielsweise geschlossen wird):

Private Sub cmdRibbonAktualisieren_Click()
     Dim strGUID As String
     strGUID = CreateGUID
     LoadCustomUI strGUID, Me!RibbonXML
     Me.RibbonName = strGUID
End Sub

Um während der Benutzung des Formulars noch normal mit Access arbeiten zu können, fügen wir dem Formular eine weitere Schaltfläche namens cmdStandardribbon hinzu, für deren Beim Klicken-Ereigniseigenschaft wir die folgende Prozedur hinterlegen:

Private Sub cmdStandardribbon_Click()
     Me.RibbonName = ""
End Sub

Dies entfernt die benutzerdefinierte Ribbon-Definition wieder. Wenn Sie jedoch eine gültige Ribbon-Definition in das Textfeld eingeben und auf Ribbon aktualisieren klicken, wird das Ribbon wie in Bild 3 angepasst. Das klappt ja schon mal gut – und ist die Grundlage für das nun folgende Praxisbeispiel.

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.