Ribbons und Formulare

Während der eine Entwickler sich zufrieden gibt, wenn das Ribbon Schaltflächen zum öffnen der verschiedenen Formulare bereithält, möchte der andere gleich einige Formularfunktionen in das Ribbon auslagern. Dazu muss man erstens einem Formular das passende Ribbon zuweisen und zweitens vom Ribbon aus die entsprechenden Formularfunktionen auslösen. Dieser Beitrag liefert die Grundlagen zu diesem Thema und mehr.

Formular per Ribbon öffnen

Bevor Sie ein Ribbon anzeigen, das spezielle Befehle für die Zusammenarbeit mit dem aktuellen Formular anzeigen soll, müssen Sie dem Benutzer Ihrer Anwendung ja zunächst einmal die Möglichkeit geben, dieses Formular überhaupt zu öffnen.

Dies nutzen wir als Aufwärmübung: Wir erstellen ein Ribbon, das gleich beim öffnen der Datenbankanwendung angezeigt wird und eine Schaltfläche zum öffnen des gewünschten Formulars anbietet.

Das tab-Element soll direkt an erster Stelle erscheinen, also noch vor den eingebauten Elementen.

Wir könnten die eingebauten Elemente einfach ausblenden, aber dann müssten wir die Datenbank immer wieder bei gedrückter Umschalttaste neu öffnen, um die übrigen Ribbon-Befehle zur Entwicklung der weiteren Elemente zu nutzen.

Das Ribbon soll also wie in Bild 1 aussehen. Um dies zu erreichen, sind die folgenden Schritte nötig:

Ribbon-Schaltfläche zum öffnen eines Formulars

Bild 1: Ribbon-Schaltfläche zum öffnen eines Formulars

  • Einrichten einer Tabelle namens USysRibbons mit den Feldern Ribbon-ID (Auto-wert, Primärschlüsselfeld), RibbonName (Text, 255 Zeichen) und RibbonXML (Memo).
  • Einfügen eines Datensatzes mit dem Wert Hauptribbon im Feld RibbonName und dem XML-Code aus Listing 1 im Feld RibbonXML.
  • <xml version="1.0">
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
       <ribbon>
         <tabs>
           <tab id="tabMain" label="Hauptribbon" insertBeforeMso="TabHomeAccess">
             <group id="grpFormulare" label="Formulare">
               <button imageMso="AccessFormDatasheet" label="Formular öffnen" 
               id="btnFormularOeffnen" size="large" onAction="onAction"/>
             </group>
           </tab>
         </tabs>
       </ribbon>
    </customUI>

    Listing 1: Ribbon-XML für das Start-Ribbon der Anwendung

  • Schließen und erneutes öffnen der Datenbank, um das neue Ribbon in den Anwendungsoptionen verfügbar zu machen.
  • Einstellen der Option Name des Menübands auf den Wert Hauptribbon (Access 2010, die Bezeichnung der Eigenschaft kann sich in anderen Versionen unterscheiden).

Die Ribbon-Definition legt für das tab-Element zunächst id und label fest. Damit das tab-Element als erstes Element im Hauptribbon von Access erscheint, stellen Sie das Attribut insertBeforeMso auf den Wert TabHomeAccess ein. TabHomeAccess entspricht dem eindeutigen Bezeichner für das tab-Element mit der Bezeichnung Start.

Das button-Element erhält ein passendes eingebautes Symbol und den Wert onAction für das Attribut onAction. Das heißt, dass beim Anklicken der Schaltfläche eine VBA-Prozedur namens onAction ausgelöst werden soll.

Damit dies gelingt, legen wir ein VBA-Modul namens mdlRibbons an und fügen die Prozedur aus Listing 2 ein.

Sub onAction(control As IRibbonControl)
     Select Case control.Id
         Case "btnFormularOeffnen"
             DoCmd.OpenForm "frmRibbonbeispiele"
     End Select
End Sub

Listing 2: öffnen eines Formulars per Mausklick auf eine Ribbon-Schaltfläche

Diese nimmt mit dem Parameter control einen Verweis auf das auslösende Ribbon-Steuerelement entgegen, dessen Namen Sie mit der Eigenschaft id ermitteln und anschließend auswerten können. Sollte die Funktion durch die Schaltfläche btnFormularOeffnen ausgelöst worden sein, soll die Prozedur das Formular frmRibbonbeispiele öffnen.

Damit all dies reibungslos funktioniert, fügen Sie dem VBA-Projekt noch einen Verweis auf die jeweilige Office-Bibliothek hinzu (Microsoft Office x.0 Object Library) und aktivieren die Option Fehler des Benutzeroberflächen-Add-Ins anzeigen im Bereich Clienteinstellungen der Access-Optionen (s. Bild 2).

Einstellen des Anwendungsribbons

Bild 2: Einstellen des Anwendungsribbons

Eingebaute Elemente ausblenden

Wenn Sie die Anwendung an den Benutzer weitergeben, soll dieser möglicherweise nur noch die benutzerdefinierten Elemente sehen und keine eingebauten mehr. Dazu brauchen Sie nur eine Zeile der Ribbon-Definition zu ändern, nämlich die des ribbon-Elements. Dort fügen Sie das Attribut startFromScratch mit dem Wert true hinzu:

  <ribbon startFromScratch="true">

Die eingebauten Ribbon-Elemente werden nun ausgeblendet.

Ribbon mit Formular anzeigen

Nun folgt der zweite Teil der Aufgabe: Wenn das Formular frmRibbonbeispiele geöffnet wurde, soll das aktuelle Ribbon durch ein weiteres Ribbon ersetzt werden.

Dieses soll zunächst lediglich einen einzigen Befehl anzeigen – nämlich den zum Schließen des Formulars. Dazu definieren wir das Ribbon wie im XML-Dokument aus Listing 3. Grundsätzlich ist das Ribbon genau wie das Hauptribbon aufgebaut.

<xml version="1.0">
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon startFromScratch="true">
     <tabs>
       <tab id="tabFormular" label="Formularfunktionen">
         <group id="grpAllgemein" label="Allgemein">
           <button imageMso="GroupColorModeClose" label="Schließen" 
           id="btnSchliessen" onAction="onAction" size="large"/>
         </group>
       </tab>
     </tabs>
   </ribbon>
</customUI>

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar