Dynamische Formular-Ribbons

Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

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.

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]