Bild 1: Option zur Anzeige von Formularen im Registerkartenformat
Im Beitrag „Ribbonklassen“ haben wir gezeigt, wie Sie das Ribbon allein mit VBA-Code definieren können. Nun wollen wir diese Technik in einer kleinen Beispielanwendung demonstrieren, in der wir eine Adressenliste in einem Formular anzeigen und alle Befehle zu dieser Adressenliste im Ribbon einbauen – also etwa, um einen neuen Datensatz anzulegen, einen bestehenden Datensatz zu löschen oder die Details zu einem Datensatz anzuzeigen.
Dabei nutzen wir in diesem Fall im Gegensatz zu den meisten anderen Anwendungen den standardmäßig eingestellten Wert Dokumente im Registerkartenformat der Option Dokumentfensteroptionen in den Access-Optionen. Die Option Dokumentregisterkarten anzeigen wollen wir allerdings deaktivieren (s. Bild 1).
Bild 1: Option zur Anzeige von Formularen im Registerkartenformat
Hauptformular der Anwendung erstellen
Anschließend erstellen wir ein Formular, das alle Datensätze der Tabelle tblKunden in der Datenblattansicht anzeigen soll. Normalerweise würden wir eine solche Ansicht als Unterformular in ein Hauptformular integrieren, um noch weitere Steuer-elemente für die Verwaltung der Daten in der Datenblattansicht bereitzustellen – etwa zum Anlegen neuer Datensätze, zum Löschen eines bestehenden Datensatzes oder auch um einen Datensatz zum Bearbeiten zu öffnen. Wenn wir allerdings einmal alle Befehle für den Zugriff auf die Adressdaten in das Ribbon verschieben, brauchen wir ja kein übergeordnetes Formular mehr.
Also legen Sie ein neues Formular an und speichern es unter dem Namen frmKundenuebersicht. Diesem Formular weisen Sie als Datenherkunft die Abfrage qryKunden zu, die alle Felder der Tabelle tblKunden enthält und diese alphabetisch nach dem Nachnamen der Lieferanschrift sortiert (s. Bild 2).
Bild 2: Datenherkunft für das Hauptformular
Registerkartenformat und Screenshots
Während ich den Screenshot dieser Abfrage machen möchte, stelle ich übrigens fest, warum ich persönlich nie mit der Option Dokumente im Registerkartenformat arbeite: Damit lassen sich einfach keine vernünftigen Screenshots einzelner Access-Objekte machen. Eine Abfrage etwa wird komplett über das Access-Fenster verteilt. Ich müsste nun das Access-Fenster zusammenschrumpfen, um alles in adäquater Größe knipsen zu können und müsste den Screenshot dann noch manuell beschneiden, weil der Abfrageentwurf in diesem Fall kein eigenes Fenster ist, das man mit gängigen Screenshot-Tools leicht erfassen könnte. Also werde ich während der Erstellung dieses Beitrags wohl oder übel zwischen den einzelnen Ansichten wechseln müssen …
Hauptformular anlegen
Die soeben erstellte Abfrage qryKunden legen wir als Datenherkunft für ein neues Formular namens frmKundenuebersicht fest. Danach ziehen Sie alle Felder der Datenherkunft aus der Feldliste in den Detailbereich des Formularentwurfs (s. Bild 3). Damit die Daten in der Datenblattansicht angezeigt werden, legen Sie für die Eigenschaft Standardansicht den Wert Datenblatt fest.
Bild 3: Entwurf des Hauptformulars frmKundenuebersicht
Ein Wechsel in die Formularansicht zeigt das Formular mit den gewünschten Daten, das wir nun um einige Funktionen anreichern wollen – und zwar, indem wir diese in das Ribbon der Anwendung aufnehmen.
Um alle Features des Ribbons zu erläutern, wollen wir die Kundenübersicht allerdings nicht direkt beim öffnen der Anwendung einblenden, sondern zunächst nur einen Ribbon-Eintrag anzeigen, der das öffnen der Kundenübersicht erlaubt. Erst beim öffnen dieser übersicht sollen dann die für dieses Formular spezifischen Befehle im Ribbon angezeigt werden. Wie dies gelingt, erfahren Sie in den folgenden Abschnitten.
Hinweis: Wenn Sie diese Anwendung als reine Adressverwaltung nutzen wollen, die immer die Kundenübersicht anzeigen soll, können Sie das Formular frmKundenuebersicht natürlich auch direkt als Startformular angeben. Dann wird das von uns für dieses Formular festgelegte Ribbon automatisch mit eingeblendet.
Vorbereitungen für das Anlegen des Ribbons
Wenn Sie unsere Ribbon-Klassen nutzen wollen, um das Ribbon zu programmieren, müssen Sie zuvor einige Access-Objekte aus der Beispieldatenbank in Ihre Zieldatenbank importieren. Dabei handelt es sich um die folgenden Objekte (bei allen Objekten außer dem Makro AutoExec handelt es sich um Standard- oder Klassenmodule):
- Startribbon
- Ribbons
- clsButton
- clsControls
- clsGroup
- clsGroups
- clsRibbon
- clsSeparator
- clsTabs
- clsTab
- mdlRibbonEnums
- mdlRibbons
- mdlTools
- mdlZwischenablage
- Makro AutoExec
Diese Objekte fügen Sie beispielsweise zur Zieldatenbank hinzu, indem Sie beide Datenbanken öffnen und nebeneinander platzieren und dann die Objekte von einem Navigationsbereich zum anderen ziehen.
Bevor Sie das Ribbon programmieren können, benötigen Sie auch noch einen Verweis auf die Bibliothek Microsoft Office x.0 Object Library (s. Bild 4). Diesen fügen Sie über den Verweise-Dialog hinzu (VBA-Editor, Menüeintrag Extras|Verweise).
Bild 4: Verweis auf die Office-Bibliothek
Den Inhalt des Moduls StartRibbon ersetzen Sie nun durch die Codezeilen aus Listing 1. Wir wollen im Startribbon zwei Schaltflächen anzeigen: Eines zum öffnen der Kundenübersicht und eine zum Beenden der Anwendung. Für diese Schaltflächen müssen wir Variablen des Typs clsButton deklarieren und mit dem Schlüsselwort With-Events ausstatten, da wir für diese ja Ereignisprozeduren hinterlegen wollen, die beim Anklicken der Button-Elemente ausgelöst werden.
Dim WithEvents btnKundenuebersicht As clsButton Dim WithEvents btnBeenden As clsButton Public Sub CreateRibbon() Dim objRibbon As clsRibbon Dim objTab As clsTab Dim objGroup As clsGroup Set objRibbon = Ribbons.Add("Main") With objRibbon .StartFromScratch = True Set objTab = .Tabs.Add("tabKundenverwaltung") With objTab .Label = "Kundenverwaltung" Set objGroup = .Groups.Add("grpUebersicht") With objGroup .Label = "übersicht" Set btnKundenuebersicht = .Controls.Add(msoRibbonControlButton, "btnKundenuebersicht") With btnKundenuebersicht .Label = "Kundenübersicht" .Size = msoRibbonControlSizelarge .Image = "users3" End With .Controls.Add msoRibbonControlSeparator Set btnBeenden = .Controls.Add(msoRibbonControlButton, "btnBeenden") With btnBeenden .Label = "Beenden" .Size = msoRibbonControlSizelarge .Image = "close" End With End With End With End With Ribbons.CreateStartRibbon "Main" End Sub Public Property Get Beenden() As clsButton Set Beenden = btnBeenden End Property Public Property Get Kundenuebersicht() As clsButton Set Kundenuebersicht = btnKundenuebersicht End Property Private Sub btnBeenden_OnAction(control As Office.IRibbonControl) DoCmd.Quit End Sub Private Sub btnKundenuebersicht_OnAction(control As Office.IRibbonControl) DoCmd.OpenForm "frmKundenuebersicht" End Sub
Listing 1: Code für das Startribbon
Die Prozedur CreateRibbon übernimmt die Erstellung des Ribbons. Sie legt zunächst ein neues Objekt des Typs clsRibbon an. Dazu fügt sie mit der Add-Methode ein neues Element zur Auflistung Ribbons hinzu. Für dieses stellen wir nun die Eigenschaft StartFromScratch auf den Wert True ein. Auf diese Weise werden alle eingebauten Ribbon-Elemente ausgeblendet. Dann fügen wir über die Add-Methode der Tabs-Auflistung von objRibbon ein neues Tab-Element hinzu und legen mit der Eigenschaft Label die Beschriftung Kundenverwaltung fest.
Nun legen wir auf ähnliche Weise ein Group-Element an und versehen es mit der überschrift übersicht. Dieses Group-Element erhält nun zwei Button-Elemente, für die wir weiter oben bereits die Variablen btnKundenuebersicht und btnBeenden festgelegt haben.
Diese fügen wir mit der Add-Methode der Controls-Auflistung des Group-Elements hinzu.
Für das erste Button-Element legen wir direkt in der Add-Methode als Name btnKundenuebersicht fest. Danach tragen wir für die Eigenschaft Label den Wert Kundenübersicht, für Size den Wert msoRibbonControlSizeLarge (für eine große Schaltfläche) und für Image den Wert users3 ein.
Die Schritte für die zweite Button-Schaltfläche erfolgen analog, nur dass wir hier natürlich andere Eigenschaften angeben.
Zwischen die beiden Schaltflächen fügen wir mit .Con-trols.Add msoRibbonControlSeparator noch eine Trennlinie ein. Nach dem Zusammenstellen der Ribbon-Definition ruft die Prozedur noch die Methode CreateStartRibbon des Ribbons-Objekts auf und übergibt als Parameter Main als Name der Ribbon-Definition.
Bilder hinzufügen
Wir müssen noch die Bilder zur Datenbank hinzufügen, die im Ribbon als Icons angezeigt werden sollen. Dazu öffnen Sie am einfachsten ein Formular in der Entwurfsansicht und klicken dann im Ribbon auf den Eintrag Entwurf|Steuerelemente|Bild einfügen|Durchsuchen… Dies öffnet einen Grafik einfügen-Dialog, mit dem Sie die Bilder auswählen können. Diese sollten für große Schaltflächen 32×32 Pixel groß sein, für kleine Schaltflächen 16×16 Pixel. Wenn Sie auf diese Weise ein oder mehrere Bilder hinzugefügt haben, sollten diese in der Liste unter Bild einfügen im Ribbon zur Auswahl erscheinen (s. Bild 5).
Bild 5: Bilder für das Ribbon
Die dort angegebenen Namen sollten mit den Namen übereinstimmen, die Sie auch für die Eigenschaft Image des Button-Elements festgelegt haben.
Nun stellen Sie noch den Namen des Anwendungsribbons ein, was wieder in den Access-Optionen geschieht. Damit der Name Main dort erscheint, müssen Sie jedoch einmal die soeben erstellte Methode CreateRibbon aufrufen.
Ribbon bereitstellen
Wenn Sie nun im Direktfenster einmalig die Methode CreateRibbon der Klasse Startribbon aufrufen, wird das Ribbon erstellt und ist danach in der Liste der Ribbons in den Access-Optionen verfügbar (s. Bild 6):
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo