event ItemOleEvent (Item as HITEM, Ev as OleEvent)

Fired when an ActiveX control hosted by an item has fired an event. /*not supported in the lite version*/

 TypeDescription 
   Item as HITEM A long expression that indicates the handle of the item that hosts an ActiveX control.  
   Ev as OleEvent An OleEvent object that contains information about the fired event.  

The Exontrol's ExTree control supports ActiveX hosting. The InsertItemControl method inserts an item that hosts an ActiveX control. The ItemOleEvent event notifies your application that a hosted ActiveX control fires an event. The ItemObject property gets the ActiveX object hosted by an item that is inserted using the InsertControlItem method. The ItemObject property gets nothing if the item doesn't host an ActiveX control, or if inserting an ActiveX control failed ).

The following VB sample adds an item that hosts the Microsoft Calendar Control and prints each event fired by that ActiveX control:

Tree1.Items.ItemHeight(Tree1.Items.InsertControlItem(, "MSCal.Calendar")) = 256ItemOLEEvent.jpg (21037 bytes)
Private Sub Tree1_ItemOleEvent(ByVal Item As EXTREELibCtl.HITEM, ByVal Ev As EXTREELibCtl.IOleEvent)
   Debug.Print "Event name:" & Ev.Name
   If (Ev.CountParam = 0) Then
      Debug.Print "The event has no arguments."
   Else
      Debug.Print "The event has the following arguments:"
      Dim i As Long
      For i = 0 To Ev.CountParam - 1
         Debug.Print Ev(i).Name; " = " & Ev(i).Value
      Next
   End If
End Sub

The following VC sample displays the events that an ActiveX control is firing while it is hosted by an item:

 #import <extree.dll> rename( "GetItems", "exGetItems" )

static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") )
{
	if ( pv )
	{
		if ( pv->vt == VT_ERROR )
			return szDefault;

		COleVariant vt;
		vt.ChangeType( VT_BSTR, pv );
		return V_BSTR( &vt );
	}
	return szDefault;
}

void OnItemOleEventTree1(long Item, LPDISPATCH Ev) 
{
	EXTREELib::IOleEventPtr spEvent( Ev );
	CString strOutput;
	strOutput.Format( "Event's name: %s\n", spEvent->Name.operator const char *() );
	OutputDebugString( strOutput ); 
	if ( spEvent->CountParam == 0 )
		OutputDebugString( "The event has no parameters." ); 
	else
	{
		for ( long i = 0; i < spEvent->CountParam; i++ )
		{
			EXTREELib::IOleEventParamPtr spParam = spEvent->GetParam( COleVariant( i ) );
			strOutput.Format( "Name: %s, Value: %s\n", spParam->Name.operator const char *(), V2S( &spParam->Value ) );
			OutputDebugString( strOutput ); 
		}
	}
	OutputDebugString( "" ); 
}

The #import clause is required to get the wrapper classes for IOleEvent and IOleEventParam objects, that are not defined by the MFC class wizard. The same #import statement defines the EXTREELib namespace that include all objects and types of the control's TypeLibrary. In case your extree.dll library is located to another place than the system folder or well known path, the path to the library should be provided, in order to let the VC finds the type library.  

The following VB.NET sample displays the events that an ActiveX control is firing while it is hosted by an item:

Private Sub AxTree1_ItemOleEvent(ByVal sender As Object, ByVal e As AxEXTREELib._ITreeEvents_ItemOleEventEvent) Handles AxTree1.ItemOleEvent
    Debug.WriteLine("Event's name: " & e.ev.Name)
    Dim i As Long
    For i = 0 To e.ev.CountParam - 1
        Dim eP As EXTREELib.OleEventParam
        eP = e.ev(i)
        Debug.WriteLine("Name: " & e.ev.Name & " Value: " & eP.Value)
    Next
End Sub

The following C# sample displays the events that an ActiveX control is firing while it is hosted by an item:

private void axTree1_ItemOleEvent(object sender, AxEXTREELib._ITreeEvents_ItemOleEventEvent e)
{
	System.Diagnostics.Debug.WriteLine( "Event's name: " + e.ev.Name.ToString() );
	for ( int i= 0; i < e.ev.CountParam ; i++ )
	{
		EXTREELib.IOleEventParam evP = e.ev[i];
		System.Diagnostics.Debug.WriteLine( "Name: " + evP.Name.ToString() + ", Value: " + evP.Value.ToString() );
	}
}

The following VFP sample displays the events that an ActiveX control fires when it is hosted by an item:

*** ActiveX Control Event ***
LPARAMETERS item, ev

local s
s = "Event's name: " + ev.Name
for i = 0 to ev.CountParam - 1
		s = s +  "Name: " + ev.Param(i).Name + " ,Value: " + Str(ev.Param(i).Value)
endfor
wait window nowait s
 

Send comments on this topic.
© 1999-2008 Exontrol Inc, Software. All rights reserved.