Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Ribbon zur Laufzeit ändern

Ribbons von Formularen und Berichten kann man zur Laufzeit nicht ändern. Man kann ihnen aber ein neues Ribbon zuweisen, das man zuvor per Code, aus der Tabelle USysRibbon oder aus einer Datei gewonnen hat.

Beispieldatenbank

Die Beispieldatenbank zeigt direkt beim Start ein Formular an, das an die Tabelle USysRibbons gebunden ist. Diese enthält bekanntlich die in den Access-Optionen und in Formularen und Berichten verfügbaren Ribbons.

Wenn man dort einen Eintrag angelegt hat (mit Ribbon-Name und dem Ribbon-XML-Code) und die Access-Anwendung erneut startet, kann man diesen in den Optionen und in der Eigenschaft Name der Multifunktionsleiste von Formularen und Berichten auswählen. Beim nächsten Start erscheinen die Ribbons dann dort auch.

Abbildung 1: Ribbons zur Laufzeit ändern

Sind Änderungen fällig, trägt man diese in die Tabelle USysRibbons ein und findet diese beim nächsten Start der Anwendung vor.

Dynamik fügt man einem Ribbon höchstens über die Aktualisierung der Callbackfunktionen hinzu.

Das war zumindest die gängige Annahme. Es ist aber auch möglich, die Ribbon-Definition zu ändern und ohne Neustart anzuzeigen. Dies zeigt die Beispielanwendung, die wir mit gutem Grund zunächst im .mde-Format geliefert haben: Sie sollten nämlich herausfinden, wie das funktioniert, was wir da gebaut haben. Geschafft hat es Johannes Wilke, der damit das bald erscheinende Buch "Ribbon-Programmierung für Office 2007" gewonnen hat.

Um die Funktion auszuprobieren, ändern Sie den im Formular frmRibbons angezeigten Ribbon-Code und klicken dann auf Anzeigen. Wenn die Ribbon-Definition regelgerecht ist, zeigt sich das Ribbon direkt in der angepassten Fassung.

Der Trick ist, mit LoadCustomUI die Ribbon-Definition in die Anwendung zu laden und ihr dabei einen noch nicht vergebenen Namen zu geben. Diesen trägt man dann in die Eigenschaft RibbonName von Formularen oder Berichten ein und erhält somit ein zur Laufzeit dynamisch generierbares Ribbon.

Der Code der Schaltfläche, die das Ribbon zur aktuell angezeigten Definition anwenden soll, sieht so aus:

Private Sub cmdAnzeigen_Click()

    Dim strGUID As String

    strGUID = CreateGUID

    Application.LoadCustomUI strGUID, Me.RibbonXML

    Me.RibbonName = strGUID

End Sub

CreateGUID ist eine Hilfsfunktion, die eine GUID für den eindeutigen Namen erzeugt, und die LoadCustomUI-Methode lädt die Ribbon-Definition unter dem angegebenen Namen ein.

© 2003-2010 André Minhorst Alle Rechte vorbehalten.