Difference between revisions of "Creating an rxCustomUI object with global dispatch scope in VBA"
From Ribbon Commander Documentation
(→Creating a new global context with a check box) |
(→Creating a new global context with a check box) |
||
Line 37: | Line 37: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Run sub '''GlobalContextUI''' to create a new check box labeled ''Global Ctx Checkbox'' in it's own global context. | * Run sub '''GlobalContextUI''' to create a new check box labeled ''Global Ctx Checkbox'' in it's own global context. | ||
+ | [[image: GlobalCtxCheckBox.png]] |
Revision as of 19:58, 10 March 2013
Prerequisites
We recommend you go through Creating our first button in VBA before getting into this example.
Background
In previous examples we worked with the default rxCustomUI instance of the current session. This is fine for example code, but in real life it is preferable that each add-in/application creates its own context (or virtual add-in) to isolate its UI from other add-ins/applications.
The framework currently supports up to 1000 contexts/session so there are enough contexts to go around!
In VBA you can create rxCustomUI objects with two types of dispatch scopes (see rxCustomUI.create, make_delegate):
- Global dispatch. Intended to be used with VBA standard modules. Delegates created by the rxCustomUI object dispatch to public functions in standard VBA modules. The rxCustomUI object returned by the static function rxCustomUI.defaultInstance has global dispatch.
- Local context. Intended to be used with VBA classes. Delegates created by the rxCustomUI object dispatch to public methods of a user-supplied dispatch object, usually the owning class.
Creating a new global context with a check box
- Enter the code below in a standard module
Public Sub GlobalContextUI()
Dim myCustomUI As rxCustomUI
Set myCustomUI = rxCustomUI.Create("my_sample_context", "My Global Context", DispatchScope_global)
With myCustomUI
.Clear
With .ribbon.tabs.Add(New rxTab)
.Label = "Global Ctx Tab"
With .groups.Add(New rxGroup)
.Label = "Global Ctx Group"
With .CheckBoxes.Add(New rxCheckBox)
.Label = "Global Ctx Checkbox"
.OnAction = myCustomUI.make_delegate("MyGlobalCtxCheckBoxCallback")
End With
End With
End With
.Refresh
End With
End Sub
Sub MyGlobalCtxCheckBoxCallback(ByVal control As DynamicRibbonX.IRibbonControl, pressed As Boolean)
MsgBox "Global Ctx Checkbox " & IIf(pressed, "clicked", "un-clicked")
End Sub
- Run sub GlobalContextUI to create a new check box labeled Global Ctx Checkbox in it's own global context.