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 2/2018.

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

Ribbon-Elemente aktivieren und deaktivieren

Im Beitrag »Software freischalten per Schlüssel« zeigen wir, wie Sie mit einem Freischaltschlüssel eine Information übergeben können, welche Funktionen einer Datenbank für den Benutzer mit dem Schlüssel freigegeben sind und wie Sie etwa in einem Formular die Schaltflächen aktivieren oder deaktivieren, die diese Funktionen aufrufen. Im vorliegenden Beitrag wollen wir uns anschauen, wie Sie die Schaltflächen eines Ribbons abhängig von den mit dem Freischaltschlüssel übergebenen Daten aktivieren oder deaktivieren können.

In dem genannten Beitrag Software freischalten per Schlüssel (www.access-im-unternehmen.de/1126) gibt es eine Funktion, welche einen Wert für die mit einem Freischaltschlüssel freigeschalteten Features des Programms mitliefert. Diese bietet einen Wert von 0 bis 7, wobei diese Zahl in eine Binärzahl umzuwandeln ist und dann über die einzelnen Positionen angibt, welche der Features freigeschaltet sind.

Der Wert 7 würde also beispielsweise bedeuten, dass alle Features funktionieren sollen – 7 entspricht binär 111. Der Wert 4 würde heißen, dass nur die Funktion aktiviert ist, welche der ersten Position von links entspricht, der Wert 1, dass nur die Funktion auf der dritten Position laufen soll.

Bevor wir uns um diesen Wert und seine Interpretation für die Steuer­elemente des Ribbons kümmern, wollen wir aber erst einmal das Ribbon hinzufügen.

Verweis auf die Office-Bibliothek

Für die Programmierung des Ribbons benötigen wir zunächst einen Verweis auf die Office-Bibliothek, den wir über den Verweise-Dialog hinzufügen. Diesen öffnen Sie im VBA-Editor (Alt + F11) über den Menüeintrag Extras|Verweise. Im Dialog setzen Sie einen Haken für den Eintrag Microsoft Office x.0 Object Library, wobei x für die bei Ihnen verfügbare Version steht (siehe Bild 1).

Verweis auf die Office-Bibliothek

Bild 1: Verweis auf die Office-Bibliothek

Tabelle zum Speichern der Ribbon-Definition

Danach fügen Sie eine Tabelle namens USysRibbons zur Datenbank hinzu, welche die Ribbon-Definitionen speichern soll. Diese sieht in der Entwurfsansicht wie in Bild 2 aus.

Definition der Tabelle USysRibbons

Bild 2: Definition der Tabelle USysRibbons

Wegen Ihres Namens, der USys... beginnt, wird die Tabelle normalerweise nicht im Navigationsbereich von Access angezeigt. Sie können diese jedoch einblenden, wenn Sie in den Optionen des Navigationsbereichs, den Sie durch einen Klick mit der rechten Maustaste auf den Titel des Navigationsbereichs und Auswahl des Eintrags Navigationsoptionen... aus dem Kontextmenü den Eintrag Systemobjekte anzeigen aktivieren.

Ribbon definieren

Anschließend können wir das Ribbon definieren. Dieses sieht im ersten Entwurf wie in Listing 1 aus. Den dortigen Code tragen Sie in das Feld RibbonXML der Tabelle USysRibbons ein. Das Feld Ribbonname erhält den Wert Main. Die Tabelle sieht dann im Entwurf wie in Bild 3 aus.

Die Tabelle USysRibbons mit der Ribbon-Definition

Bild 3: Die Tabelle USysRibbons mit der Ribbon-Definition

<?xml version="1.0"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnLoad_NeuesRibbon">
   <ribbon startFromScratch="true">
     <tabs>
       <tab id="tab1" label="Tab 1">
         <group id="grp1" label="Gruppe 1">
           <button label="Button 1" id="btn1"/>
           <button label="Button 2" id="btn2"/>
           <button label="Button 3" id="btn3"/>
         </group>
         <group id="grp2" label="Gruppe 2" getVisible="getVisible">
           <button label="Button 1" id="btn21"/>
         </group>
         <group id="grp3" label="Gruppe 3" getVisible="getVisible">
             <button label="Button 1" id="btn31"/>
         </group>
       </tab>
       <tab id="tab2" label="Tab 2" />
       <tab id="tab3" label="Tab 3" />
     </tabs>
   </ribbon>
</customUI>

Listing 1: Definition des Ribbons mit drei Schaltflächen, drei Tabs und drei Gruppen

Dadurch, dass wir die Eigenschaft startFromScratch des Elements ribbon auf den Wert true eingestellt haben, werden alle eingebauten Elemente des Ribbons ausgeblendet und nur noch die benutzerdefinierten Elemente angezeigt.

Damit das Ribbon nun auch noch in der Anwendung erscheint, sind noch weitere Schritte nötig. Als Erstes müssen Sie die Anwendung schließen und neu starten. Erst dann ist die neue Ribbon-Definition auch in der Auswahlliste der Ribbons für diese Anwendung enthalten. Die Auswahlliste finden Sie, wenn Sie mit einem Klick auf den Datei-Reiter des Ribbons den Backstage-Bereich öffnen und dann auf den Eintrag Optionen klicken. Im nun erscheinenden Dialog Access-Optionen wählen Sie links den Eintrag Aktuelle Datenbank aus. Rechts finden Sie dann unter Menüband- und Symbolleistenoptionen die Eigenschaft Name des Menübands, wo Sie unser soeben erstelltes Ribbon namens Main auswählen (siehe Bild 4).

Auswahl des Ribbons in den Einstellungen der Datenbank

Bild 4: Auswahl des Ribbons in den Einstellungen der Datenbank

Wenn Sie danach die Anwendung nochmals schließen und wieder öffnen, erscheint unser Ribbon und sieht wie in Bild 5 aus.

Benutzerdefiniertes Ribbon

Bild 5: Benutzerdefiniertes Ribbon

Callback-Attribute anlegen

Nun sind allerdings noch keine Elemente deaktiviert geschweige denn hätten wir überhaupt irgendwelche Maßnahmen ergriffen, um dies zu bewerkstelligen. Wie aber wollen wir dafür sorgen, dass die Schaltflächen in Abhängigkeit von den freigeschalteten Funktionen aktiviert oder deaktiviert werden? Dazu benötigen wir zunächst einige Callback-Attribute für die einzelnen Elemente sowie die VBA-Prozeduren, welche die passenden Werte zum Aktivieren oder Deaktivieren zurückliefern.

Genau genommen können wir nur die Button-Elemente aktivieren oder deaktivieren, da nur diese über eine enabled-Eigenschaft verfügen und eine entsprechende getEnabled-Eigenschaft.

Wir wollen aber auch anhand der tab- und group-Elemente zeigen, wie sich diese in Abhängigkeit vom Funktionsumfang beeinflussen lassen. Es fehlt diesen Elementen zwar an einer enabled-Eigenschaft, dafür stellen Sie aber ein visible-Attribut und ein entsprechendes getVisible-Callback-Attribut zur Verfügung.

Also statten wir die getEnabled-Attribute der button-Elemente und die getVisible-Attribute der tab- und der group-Elemente mit den Werten getEnabled beziehungsweise getVisible aus. Die Definition des Ribbons sieht dann wie in Listing 2 aus.

<?xml version="1.0"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

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.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.