property Item.SubControl as Control
Retrieves the Control object that holds information about item's inside component.

TypeDescription
Control A Control object that holds properties to handle the inside ActiveX item.

Use the SubControl property when using the ItemTypeEnum.SubControl to add an item that hosts an ActiveX inside. Use the ControlID property to specify the IDentifier of the object to be displayed on the item. Use the Create method to create an inside ActiveX control. The inside ActiveX control fires the events through the OleEvent event.

The following screen shot displays an item with an ExCalendar inside:

The following samples shows how to load an ActiveX control ( Exontrol.Calendar )

VBA (MS Access, Excell...)

With Ribbon1
	With .Items.Add("Calendar",3).SubControl
		.Width = 256
		.Height = 256
		.ControlID = "Exontrol.Calendar"
		.Create 
	End With
	.Refresh 
End With

VB6

With Ribbon1
	With .Items.Add("Calendar",3).SubControl
		.Width = 256
		.Height = 256
		.ControlID = "Exontrol.Calendar"
		.Create 
	End With
	.Refresh 
End With

VB.NET

With Exribbon1
	With .Items.Add("Calendar",3).SubControl
		.Width = 256
		.Height = 256
		.ControlID = "Exontrol.Calendar"
		.Create()
	End With
	.Refresh()
End With

VB.NET for /COM

With AxRibbon1
	With .Items.Add("Calendar",3).SubControl
		.Width = 256
		.Height = 256
		.ControlID = "Exontrol.Calendar"
		.Create()
	End With
	.Refresh()
End With

C++

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXRIBBONLib' for the library: 'ExRibbon 1.0 Control Library'

	#import <ExRibbon.dll>
	using namespace EXRIBBONLib;
*/
EXRIBBONLib::IRibbonPtr spRibbon1 = GetDlgItem(IDC_RIBBON1)->GetControlUnknown();
EXRIBBONLib::IControlPtr var_Control = spRibbon1->GetItems()->Add(L"Calendar",long(3),vtMissing)->GetSubControl();
	var_Control->PutWidth(256);
	var_Control->PutHeight(256);
	var_Control->PutControlID(L"Exontrol.Calendar");
	var_Control->Create();
spRibbon1->Refresh();

C++ Builder

Exribbonlib_tlb::IControlPtr var_Control = Ribbon1->Items->Add(L"Calendar",TVariant(3),TNoParam())->SubControl;
	var_Control->Width = 256;
	var_Control->Height = 256;
	var_Control->ControlID = L"Exontrol.Calendar";
	var_Control->Create();
Ribbon1->Refresh();

C#

exontrol.EXRIBBONLib.Control var_Control = exribbon1.Items.Add("Calendar",3,null).SubControl;
	var_Control.Width = 256;
	var_Control.Height = 256;
	var_Control.ControlID = "Exontrol.Calendar";
	var_Control.Create();
exribbon1.Refresh();

JScript/JavaScript

<BODY onload='Init()'>
<OBJECT CLASSID="clsid:DDF58CFA-750F-45E0-8A00-CFBE431702E2" id="Ribbon1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
	var var_Control = Ribbon1.Items.Add("Calendar",3,null).SubControl;
		var_Control.Width = 256;
		var_Control.Height = 256;
		var_Control.ControlID = "Exontrol.Calendar";
		var_Control.Create();
	Ribbon1.Refresh();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload='Init()'>
<OBJECT CLASSID="clsid:DDF58CFA-750F-45E0-8A00-CFBE431702E2" id="Ribbon1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
	With Ribbon1
		With .Items.Add("Calendar",3).SubControl
			.Width = 256
			.Height = 256
			.ControlID = "Exontrol.Calendar"
			.Create 
		End With
		.Refresh 
	End With
End Function
</SCRIPT>
</BODY>

C# for /COM

EXRIBBONLib.Control var_Control = axRibbon1.Items.Add("Calendar",3,null).SubControl;
	var_Control.Width = 256;
	var_Control.Height = 256;
	var_Control.ControlID = "Exontrol.Calendar";
	var_Control.Create();
axRibbon1.Refresh();

X++ (Dynamics Ax 2009)

public void init()
{
	COM com_Control,com_Item;
	anytype var_Control,var_Item;
	;

	super();

	var_Item = COM::createFromObject(exribbon1.Items()).Add("Calendar",COMVariant::createFromInt(3)); com_Item = var_Item;
	var_Control = com_Item.SubControl(); com_Control = var_Control;
		com_Control.Width(256);
		com_Control.Height(256);
		com_Control.ControlID("Exontrol.Calendar");
		com_Control.Create();
	exribbon1.Refresh();
}

Delphi 8 (.NET only)

with AxRibbon1 do
begin
	with Items.Add('Calendar',TObject(3),Nil).SubControl do
	begin
		Width := 256;
		Height := 256;
		ControlID := 'Exontrol.Calendar';
		Create();
	end;
	Refresh();
end

Delphi (standard)

with Ribbon1 do
begin
	with Items.Add('Calendar',OleVariant(3),Null).SubControl do
	begin
		Width := 256;
		Height := 256;
		ControlID := 'Exontrol.Calendar';
		Create();
	end;
	Refresh();
end

VFP

with thisform.Ribbon1
	with .Items.Add("Calendar",3).SubControl
		.Width = 256
		.Height = 256
		.ControlID = "Exontrol.Calendar"
		.Create
	endwith
	.Refresh
endwith

dBASE Plus

local oRibbon,var_Control

oRibbon = form.Activex1.nativeObject
var_Control = oRibbon.Items.Add("Calendar",3).SubControl
	var_Control.Width = 256
	var_Control.Height = 256
	var_Control.ControlID = "Exontrol.Calendar"
	var_Control.Create()
oRibbon.Refresh()

XBasic (Alpha Five)

Dim oRibbon as P
Dim var_Control as P

oRibbon = topparent:CONTROL_ACTIVEX1.activex
var_Control = oRibbon.Items.Add("Calendar",3).SubControl
	var_Control.Width = 256
	var_Control.Height = 256
	var_Control.ControlID = "Exontrol.Calendar"
	var_Control.Create()
oRibbon.Refresh()

Visual Objects

local var_Control as IControl

var_Control := oDCOCX_Exontrol1:Items:Add("Calendar",3,nil):SubControl
	var_Control:Width := 256
	var_Control:Height := 256
	var_Control:ControlID := "Exontrol.Calendar"
	var_Control:Create()
oDCOCX_Exontrol1:Refresh()

PowerBuilder

OleObject oRibbon,var_Control

oRibbon = ole_1.Object
var_Control = oRibbon.Items.Add("Calendar",3).SubControl
	var_Control.Width = 256
	var_Control.Height = 256
	var_Control.ControlID = "Exontrol.Calendar"
	var_Control.Create()
oRibbon.Refresh()

Visual DataFlex

Procedure OnCreate
	Forward Send OnCreate
	Variant voItems
	Get ComItems to voItems
	Handle hoItems
	Get Create (RefClass(cComItems)) to hoItems
	Set pvComObject of hoItems to voItems
		Variant voItem
		Get ComAdd of hoItems "Calendar" 3 Nothing to voItem
		Handle hoItem
		Get Create (RefClass(cComItem)) to hoItem
		Set pvComObject of hoItem to voItem
			Variant voControl
			Get ComSubControl of hoItem to voControl
			Handle hoControl
			Get Create (RefClass(cComControl)) to hoControl
			Set pvComObject of hoControl to voControl
				Set ComWidth of hoControl to 256
				Set ComHeight of hoControl to 256
				Set ComControlID of hoControl to "Exontrol.Calendar"
				Send ComCreate of hoControl
			Send Destroy to hoControl
		Send Destroy to hoItem
	Send Destroy to hoItems
	Send ComRefresh
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oControl
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oControl := oRibbon:Items():Add("Calendar",3):SubControl()
			oControl:Width := 256
			oControl:Height := 256
			oControl:ControlID := "Exontrol.Calendar"
			oControl:Create()
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN