Ribbon: Callback-Signaturen für VBA und VB6

Wer das Ribbon um benutzerdefinierte Erweiterungen ergänzen möchte, kommt früher oder später nicht um die Programmierung von Callback-Funktionen herum. Das sind Funktionen, die für Callback-Attribute von Ribbon-Elementen angegeben werden und die für verschiedene Aktionen aufgerufen werden – beispielsweise beim Anklicken einer Schaltfläche, beim Ändern des Inhalts eines Textfeldes oder schlicht, um vor dem Anzeigen dynamisch Einstellungen für Attribute des Ribbons einzulesen. Diese Callback-Funktionen haben eine bestimmte Signatur (sprich Definition der ersten Zeile). Da diese für den Einsatz von VBA und VB6 unterschiedlich aussehen und aktuell twinBASIC als Ersatz für VB6 heranreift, wollen wir eine Referenz der Callback-Signaturen für diese beiden Programmiersprachen anbieten.

Warum verschiedene Callback-Signaturen

Als ich neulich angefangen habe, mit der neuen Programmiersprache twinBASIC COM-Add-Ins für die Benutzeroberfläche von Access zu programmieren, wollte ich natürlich auch Callback-Funktionen einsetzen.

Also habe ich einfach die gleichen Callback-Funktionen verwendet, die ich sonst unter Access und VBA einsetze. Der Aufruf lieferte allerdings immer wieder den gleichen Fehler (siehe Bild 1).

Fehler durch falsche Callback-Signatur

Bild 1: Fehler durch falsche Callback-Signatur

Ich bin fast verzweifelt, bis ich mich dann daran erinnerte, schon einmal mit dem alten Visual Studio unter VB6 ein COM-Add-In mit Ribbon programmiert zu haben – und dass dort die Signatur der Callback-Funktionen anders ausgesehen hat.

Unter VB6 sind Callback-Funktionen nämlich tatsächlich Funktionen – und nicht wie unter VBA Callback-Prozeduren, die einen weiteren Parameter enthalten, der als Rückgabewert verwendet wird.

Schauen wir uns also die unterschiedlichen Signaturen für die einzelnen Steuerelemente des Ribbons für VBA und VB6 an!

Wichtige Informationen

Vorab die wichtigste Information: Verwenden Sie alle Callback-Signaturen genau so wie Sie hier abgebildet sind. Manchmal kann bereits das Hinzufügen eines Datentyps zu einem Parameter, der hier keinen Datentyp aufweist, zu Problemen führen. Wichtig ist auch, auf die korrekte Verwendung von Function/Sub zu achten. Wenn Sie twinBASIC verwenden, können Sie das Ergebnis zum Zurückgeben entweder einer Variablen mit dem gleichen Namen wie die Funktion zuweisen, aber auch die Return-Anweisung nutzen:

Function GetText(control As IRibbonControl, ByRef text)  As String
     .,,
     Return strText
End Function

Bei den folgenden Definitionen stellen wir zunächst die je nach Steuerelement individuellen Callback-Funktionen vor. Am Ende finden Sie eine Auflistung all jener Callback-Funktionen, die von einer großen Anzahl an Steuerelementen verwendet wird.

Die Callback-Funktionen des button-Elements

Das button-Element bietet die folgenden Callback-Funktionen:

getShowImage: Fragt ab, ob ein Image angezeigt werden soll. Das geschieht unter VBA mit dem Rückgabe-Parameter showImage, unter VB6/twinBASIC mit dem Rückgabewert.

VBA: Sub GetShowImage (control As IRibbonControl, ByRef showImage)
VB6/twinBASIC: Function GetShowImage (control As IRibbonControl) As Boolean

getShowLabel: Fragt ab, ob eine Bezeichnung angezeigt werden soll. Der Wert True oder False wird mit dem Parameter showLabel oder dem Rückgabewert übergeben.

VBA: Sub GetShowLabel (control As IRibbonControl, ByRef showLabel)
VB6/twinBASIC: Function GetShowLabel (control As IRibbonControl) As Boolean

onAction: Wird beim Anklicken ausgelöst. Diese Signatur gilt für benutzerdefinierte button-Elemente.

VBA: Sub OnAction(control As IRibbonControl)
VB6/twinBASIC: Sub OnAction(control As IRibbonControl)

onAction, Alternative: Wird beim Anklicken eines eingebauten Elements ausgelöst, für das Sie ein command-Element definiert haben. Wie Sie diese Variante von onAction einsetzen, lernen Sie im Beitrag Funktion von eingebauten Ribbon-Steuerelementen überschreiben (www.access-im-unternehmen.de/1328) in der nächsten Ausgabe.

VBA: Sub OnAction(control As IRibbonControl, ByRef CancelDefault)
VB6/twinBASIC: Sub OnAction(control As IRibbonControl, ByRef CancelDefault)

Die Callback-Funktionen des checkBox-Elements

Das checkBox-Element bietet die folgenden Callback-Funktionen:

getPressed: Stellt den Zustand des checkBox-Steuerelements ein, also auf True oder False. Der Rückgabewert heißt unter VBA returnValue.

VBA: Sub GetPressed(control As IRibbonControl, ByRef returnValue)
VB6/twinBASIC: Function GetPressed(control As IRibbonControl) As Boolean

onAction: Wird ausgelöst, wenn der Benutzer auf ein checkBox-Steuerelement klickt und seinen Wert damit ändert. Liefert den neuen Wert mit dem Boolean-Parameter pressed.

VBA: Sub OnAction(control As IRibbonControl, pressed As Boolean)
VB6/twinBASIC: Sub OnAction(control As IRibbonControl, pressed As Boolean)

Die Callback-Funktionen des comboBox-Elements

Das comboBox-Element bietet die folgenden Callback-Funktionen:

getItemCount: Callback-Funktion zum Abfragen der Anzahl der im comboBox-Steuerelement anzuzeigenden Einträge. Zu liefern mit dem Parameter count oder dem Rückgabewert der Callback-Funktion.

VBA: Sub GetItemCount(control As IRibbonControl, ByRef count)
VB6/twinBASIC: Function GetItemCount(control As IRibbonControl) As Integer

getItemID: Ruft den Wert für die ItemID eines der Einträge des comboBox-Steuerelements ab, dessen Index unter VBA mit dem Parameter index abgefragt wird – oder mit dem Rückgabewert unter Visual Basic 6/twinBASIC.

VBA: Sub GetItemID(control As IRibbonControl, index As Integer, ByRef id)
VB6/twinBASIC: Function GetItemID(control As IRibbonControl, index As Integer) As String

getItemImage: Ruft den Namen des Bildes eines der Einträge des comboBox-Steuerelements ab, dessen Index unter VBA mit dem Parameter index oder unter VB6/twinBASIC mit dem Rückgabewert der Callback-Funktion abgefragt wird.

VBA: Sub GetItemImage(control As IRibbonControl, index As Integer, ByRef image)
VB6/twinBASIC: Function GetItemImage(control As IRibbonControl, index As Integer) As IPictureDisp

getItemLabel: Ruft die Beschriftung eines der Einträge des comboBox-Steuerelements ab, dessen Index mit dem Parameter index oder dem Rückgabewert übergeben wird.

VBA: Sub GetItemLabel(control As IRibbonControl, index As Integer, ByRef label)
VB6/twinBASIC: Function GetItemLabel(control As IRibbonControl, index As Integer) As String

getItemScreenTip: Ruft den screenTip eines der Einträge des comboBox-Steuerelements ab, dessen Index mit dem Parameter index oder dem Rückgabewert übergeben wird.

VBA: Sub GetItemScreenTip(control As IRibbonControl, index As Integer, ByRef screentip)
VB6/twinBASIC: Function GetItemScreentip(control As IRibbonControl, index As Integer) As String

getItemSuperTip: Ruft den superTip eines der Einträge des comboBox-Steuerelements ab, dessen Index mit dem Parameter index oder dem Rückgabewert übergeben wird.

VBA: Sub GetItemSuperTip (control As IRibbonControl, index As Integer, ByRef supertip)
VB6/twinBASIC: Function GetItemSuperTip (control As IRibbonControl, index As Integer) As String

getText: Ruft den aktuell im comboBox-Element anzuzeigenden Text ab. Dies geschieht über den Parameter text oder den Rückgabewert.

VBA: Sub GetText(control As IRibbonControl, ByRef text)
VB6/twinBASIC: Function GetText(control As IRibbonControl) As String

onChange: Wird ausgelöst, wenn der Benutzer einen anderen Eintrag im comboBox-Steuerelement auswählt. Liefert den neuen Wert mit dem Parameter text.

VBA: Sub OnChange(control As IRibbonControl, text As String)
VB6/twinBASIC: Sub OnChange(control As IRibbonControl, text As String)

Die Callback-Funktionen des customUI-Elements

Das customUI-Element bietet die folgenden Callbacks:

loadImage: Wird beim Anzeigen eines Ribbons für jedes Steuerelement im Ribbon einmal ausgelöst, für das im Attribut image ein Bildname hinterlegt ist.

VBA: Sub LoadImage(imageId As string, ByRef image)
VB6/twinBASIC: Function LoadImage(imageId As String) As IPictureDisp

onLoad: Wird beim erstmaligen Laden des Ribbons ausgelöst und erlaubt das Referenzieren der mit ribbon gelieferten Instanz der Ribbon-Definition.

VBA: Sub OnLoad(ribbon As IRibbonUI)
VB6/twinBASIC: Function OnLoad(ribbon As IRibbonUI)

Die Callback-Funktionen des dropDown-Elements

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

TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar