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/2013.

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

Zusammenfassung

Lernen Sie, das Ribbon von Access 2007 und jünger anzupassen.

Techniken

Ribbon, XML

Voraussetzungen

Access 2007 und höher

Beispieldateien

RibbonGuide.accdb

Shortlink

www.access-im-unternehmen.de/877

Ribbon-Guide, Teil I: Rund um das tab-Element

André Minhorst, Duisburg

Mit dem Ribbon hat Microsoft dem Entwickler eine Möglichkeit an die Hand gegeben, eine optisch ansprechende Menüstruktur zu implementieren. Verschieden große Bilder und Schaltflächen, viel mehr Steuerelemente als zuvor in den Menü- und Symbolleisten und einige weitere interessante Features. Diese Beitragsreihe liefert eine Übersicht über die Möglichkeiten und wie Sie diese erreichen. Den Start machen einige grundlegende Informationen und das tab-Element.

Wenn Sie das Ribbon mit all seinen Features nutzen möchten, sind einige Vorbereitungen zu treffen. Welche Möglichkeiten sind dies genau, die sonst nicht geboten werden? Zum Beispiel die Anzeige benutzerdefinierter Bilder oder die Interaktion mit dem Benutzer und das Reagieren auf Eingaben etwa durch das Aktivieren oder Deaktivieren von Schaltflächen.

Außerdem sind noch einige grundlegende Dinge zu erledigen, so zum Beispiel das Anlegen einer Tabelle zum Speichern der Ribbon-Definitionen. Diese können dann später als Anwendungsribbon (also gleich beim Start der Anwendung) oder erst beim Anzeigen eines Formulars oder Berichts angezeigt werden.

Diese Tabelle muss USysRibbons heißen und die folgenden drei Felder enthalten:

  • ID
  • RibbonName
  • RibbonXML

Im Entwurf sieht die Tabelle wie in Abb. 1 aus. Die Tabelle wurde dort bereits gespeichert und ist im Navigationsbereich sichtbar. Dies ist nicht immer der Fall, sondern nur mit speziellen Einstellungen. Diese nehmen Sie vor, indem Sie mit der rechten Maustaste auf die Titelleiste des Navigationsbereichs klicken und dort den Kontextmenüeintrag Navigationsoptionen... auswählen.

pic002.png

Abb. 1: Die Tabelle USysRibbons im Entwurf

Es erscheint der Dialog aus Abb. 2. Dort aktivieren Sie die Option Systemobjekte anzeigen, um die Systemtabellen und auch die Tabelle USysRibbons einzublenden.

pic001.png

Abb. 2: Einblenden der Systemobjekte

Desweiteren sollten Sie, um auf Fehler im Ribbon-Code aufmerksam gemacht zu werden, die Option Fehler des Benutzeroberflächen-Add-Ins anzeigen in den Access-Optionen aktivieren (s. Abb. 3).

pic003.png

Abb. 3: Aktivieren der Anzeige von Ribbon-Fehlern

Nach diesen grundlegenden Vorbereitungen schauen wir uns die Programmierung eines Ribbons an.

VBA und XML

Das Aussehen eines Ribbons wird nicht wie das etwa einer Menüleiste per Benutzeroberfläche zusammengeklickt oder per VBA definiert, sondern mit einem XML-Dokument. Dieses speichern Sie im Feld RibbonXML der Tabelle USysRibbons - nebst einem entsprechenden Namen im Feld RibbonName.

Wenn eine Benutzeraktion wie etwa ein Klick auf eine Ribbon-Schaltfläche etwas auslösen soll, legen Sie eine entsprechende Prozedur an. Zu den Aktionen kommen wir später, erst einmal schauen wir uns die verschiedenen gestalterischen Möglichkeiten an.

Die einfachste Konstellation, mit der sich etwas anfangen lässt, enthält ein tab-, ein group- und ein button-Element (s. Abb. 4). Dies fügt den bestehenden Tabs ein weiteres hinzu, das standardmäßig hinten eingefügt wird. Klicken Sie auf das tab-Element, zeigt dieses ein group-Element mit einem button-Element an.

pic004.png

Abb. 4: Einfaches Ribbon mit einer Schaltfläche

Diese Verschachtelung erhalten Sie, wenn Sie das XML-Dokument wie in Listing 1 aufbauen.

Listing 1: Definition eines einfachen Ribbons

<?xml version="1.0"?>

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

    <ribbon>

        <tabs>

            <tab id="tab1" label="tab-Element">

                <group id="grp1" label="group-Element">

                    <button label="button-Element" id="btnSchaltflaeche"/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

Das customUI-Element bildet immer den äußeren Rahmen. Wenn Sie das Ribbon anpassen möchten, fügen Sie darunter das ribbon-Element hinzu. Dieses enthält das tabs-Element, das ein oder mehrere tab-Elemente enthalten kann. Das tab-Element nimmt das group-Element auf, das group-Element die eigentlichen Steuerelemente wie in diesem Fall das button-Element.

Access-Version

Das customUI-Element enthält einen Hinweis auf den verwendeten Namespace. Für Office 2007 lautet dieser wie folgt:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

Unter Office 2010 verwenden Sie dieses Element:

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

Der Unterschied ist, dass Access die folgende Ribbon-Definition mit einer .xsd-Datei vergleicht, welche Informationen darüber enthält, wie die Ribbon-Definition aufgebaut sein darf. In der Version für Office 2007 können Sie beispielsweise das officeMenu-Element einsetzen, in der Version für Office 2010 nicht mehr. Dafür dürfen Sie in der Version für Office 2010 das backstage-Elemeent deklarieren.

Wenn Sie eine für Access 2010 angelegte Ribbon-Definition unter Access 2007 einblenden möchten, führt dies zu einem Fehler, weil Access 2007 den Namespace nicht verarbeiten kann. Wenn Sie eine für Access 2007 vorgesehene Ribbon-Definition unter Access 2010 verwenden, wird dieses erkannt. Lediglich die benutzerdefinierten Einträge unterhalb des officeMenu-Elements werden nicht wie unter Access 2007 interpretiert, sondern im Backstage-Bereich links unten eingebaut (s. Abb. 5).

pic014.png

Abb. 5: Das benutzerdefinierte officeMenu-Element wird in Access 2010 unterhalb vom Hilfe-Menüpunkt im Backstage angeboten.

Das officeMenu-Element können Sie hingegen nicht in Definitionen für Access 2010 einsetzen und umgekehrt auch nicht das backstage-Element in Definitionen für Access 2007. Sie müssen also, wenn Sie diese Elemente verwenden möchten, tatsächlich zwei Versionen der Datenbank für Access 2007 und Access 2010 verteilen.

Ich habe einige wenige Alternativen zur Herstellung von Kompatibilität bezüglich der Ribbon-Definitionen getestet, mit denen ich um die Verwendung zweier Versionen einer Anwendung für die verschiedenen Access-Versionen herumkommen wollte - immerhin müsste man Änderungen sonst immer gleich an zwei Datenbankdateien durchführen.

Die erste Idee war, die Tabelle USysRibbons umzubenennen - beispielsweise in _USysRibbons - und dann eine Abfrage namens USysRibbons zu erstellen, die alle Datensätze der umbenannten Tabelle _USysRibbons enthält. Dabei soll die Tabelle gleich zwei Versionen einer jeden Ribbon-Definition enthalten. Die Abfrage sollte dann etwa anhand einer VBA-Funktion ermitteln, ob gerade Access 2007 oder Access 2010 geöffnet ist, und dann die entsprechende Version der Ribbon-Definition zurückgeben. Leider scheiterte dieser Versuch bereits an einer einfachen, auf der Tabelle mit den Ribbon-Definitionen basierenden Abfrage namens USysRibbons - Access pocht nämlich anscheinend darauf, dass USysRibbons eine Tabelle und keine Abfrage ist.

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.