Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

12.5.2 Ereigniseigenschaften

12.5.3 Umgang mit Callback-Funktionen

Wenn Sie einmal ein Ribbon mit mehr als nur einem tab-Element mit wenigen Unterelementen und passenden Callback-Funktionen bestücken, bekommen Sie möglicherweise Probleme bei der Vergabe der Namen für die Callback-Funktionen. Die Beispiele verwenden ja meist Routinennamen, die dem Namen der Ereigniseigenschaft bis auf den großgeschriebenen Anfangsbuchstaben gleichen.

Wenn Sie auch so vorgehen möchten, müssen Sie berücksichtigen, dass es auch einmal mehr als ein Steuerelement geben kann, für das Sie etwa eine Routine namens OnAction anlegen möchten.

In diesem Fall haben Sie zwei Möglichkeiten:

  • Sie verwenden für jede Callback-Routine jedes Elements einen eindeutigen Namen.
  • Sie verwenden für jede Ereignisart eine Routine, die jeweils das auslösende Steuerelement auswertet - etwa mit einem Select Case über den per Parameter übergebenen Steuerelementnamen.
  • Callback-Routinen mit eindeutigem Namen

    Im ersten Fall weisen Sie den zu erstellenden Routinen Namen zu, die eindeutig sind und dennoch dem Element zugeordnet werden können (sonst entsteht schnell ein sehr unübersichtlicher Berg von Callback-Funktionen).

    So können Sie etwa das label- oder id-Attribut des Steuerelements integrieren und die Bezeichnung btnBeispiel_onChange verwenden. Und wenn verschiedene group- oder tab-Elemente Steuerelemente gleichen Namens enthalten, bauen Sie eben auch noch das label- oder id-Attribut der übergeordneten Elemente mit ein.

    Im Extremfall würde eine Callback-Routine dann beispielsweise tabMain_grpDateien_btnOeffnen_onAction heißen.

    Eine Callback-Routine für alle Elemente

    Bei der zweiten empfehlenswerten Variante legen Sie tatsächlich nur eine Callback-Routine für jedes Ereignis wie etwa onAction oder getDescription an, deren Name beispielsweise der Attributbezeichnung mit großem Anfangsbuchstaben entspricht (also OnAction oder GetDescription). Beim Aufruf einer solchen Funktion wertet diese dann den Parameter control aus, der übrigens in allen Callback-Funktionen enthalten ist. Das sieht dann beispielsweise wie im folgenden Listing aus:

    Public Sub OnAction(ctl As IRibbonControl)
        Select Case ctl.id
            Case "btnBeispielschaltflaeche1"
                'tu was
            Case "btnBeispielschaltflaeche2"
                'tu was anderes
            Case Else
                MsgBox "Unbekannte Schaltfläche!"
        End Select
    End Sub

    Listing 12.6: Diese Routine wertet aus, von welchem Steuerelement sie aufgerufen wurde, und reagiert mit der für dieses Element vorgesehenen Aktion

    Leider kommen Sie damit nicht allzu weit: Wie Sie Tabelle 12.3 entnehmen können, besitzen Callback-Funktionen für gleichnamige Ereigniseigenschaften durchaus nicht immer die gleiche Syntax.

    Die obige Routine entspricht etwa der Syntax für ein button-Element, die Syntax für die onAction-Callback-Routine eines dropDown-Elements hingegen sieht so aus:

    Sub OnAction(control As IRibbonControl, selectedId As String, selectedIndex As Integer)

    Und da Access einen Fehler meldet, wenn eine Callback-Funktion die falschen Parameter enthält (vorausgesetzt, Sie haben wie oben beschrieben die Fehlerbehandlung für Ribbons aktiviert), müssen Sie zumindest für jede Steuerelementart eine Callback-Funktion mit einem eigenen Namen anlegen. Beim onAction-Attribut könnte diese etwa OnButtonAction, OnCheckBoxAction, OnDropDownAction, OnGalleryAction oder OnToggleButtonAction heißen. Die Klasse (genauer: das Interface) IRibbonControl ist übrigens in der Microsoft Office 12.0 Library definiert, die Sie deshalb den Verweisen des VBA-Projekts hinzufügen müssen. Sie hat die folgenden Eigenschaften:

  • ID: Gibt die in der XML-Definition für das Steuerelement festgelegte und obligatorische ID zurück.
  • Context: Gibt einen Objektverweis auf die Anwendung des Ribbons zurück. Bei Access handelt es sich hierbei um das Application-Objekt.
  • Tag: Gibt eine Zeichenfolge zurück, die Sie optional in der XML-Definition für das Steuerelement angegeben haben. Beispiel:
  • © 2006-2008 André Minhorst Alle Rechte vorbehalten.