event OLEDragDrop (Data as ExDataObject, Effect as Long, Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.

TypeDescription
Data as ExDataObject An ExDataObject object containing formats that the source will provide and, in addition, possibly the data for those formats. If no data is contained in the ExDataObject, it is provided when the control calls the GetData method. The SetData and Clear methods cannot be used here.
Effect as Long A Long set by the target component identifying the action that has been performed (if any), thus allowing the source to take appropriate action if the component was moved (such as the source deleting the data). The possible values are listed in bellow.
Button as Integer An integer which acts as a bit field corresponding to the state of a mouse button when it is depressed. The left button is bit 0, the right button is bit 1, and the middle button is bit 2. These bits correspond to the values 1, 2, and 4, respectively. It indicates the state of the mouse buttons; some, all, or none of these three bits can be set, indicating that some, all, or none of the buttons are depressed
Shift as Integer An integer which acts as a bit field corresponding to the state of the SHIFT, CTRL, and ALT keys when they are depressed. The SHIFT key is bit 0, the CTRL key is bit 1, and the ALT key is bit 2. These bits correspond to the values 1, 2, and 4, respectively. The shift parameter indicates the state of these keys; some, all, or none of the bits can be set, indicating that some, all, or none of the keys are depressed. For example, if both the CTRL and ALT keys were depressed, the value of shift would be 6.
X as OLE_XPOS_PIXELS A single that specifies the current X location of the mouse pointer. The X value is always expressed in container coordinates
Y as OLE_YPOS_PIXELS A single that specifies the current Y location of the mouse pointer. The Y value is always expressed in container coordinates
The OLEDragDrop event is fired when the user has dropped files or clipboard information into control. In order to enable OLE drag and drop feature into control you have to check the OLEDropMode property.  The idea of drag and drop in the control is the same as in the other controls. To start accepting drag and drop sources the control should have the OLEDropMode to exOLEDropManual. Once that is is set, the controls starts accepting any drag and drop sources. Use the SelText property to insert text at cursor position.

The settings for Effect are:

Syntax for OLEDragDrop event, /NET version, on:

// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

Syntax for OLEDragDrop event, /COM version, on:

private void OLEDragDrop(object sender, AxEXHTMLLib._IHTMLEvents_OLEDragDropEvent e)
{
}

void OnOLEDragDrop(LPDISPATCH Data,long FAR* Effect,short Button,short Shift,long X,long Y)
{
}

void __fastcall OLEDragDrop(TObject *Sender,Exhtmllib_tlb::IExDataObject *Data,long * Effect,short Button,short Shift,int X,int Y)
{
}

procedure OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure OLEDragDrop(sender: System.Object; e: AxEXHTMLLib._IHTMLEvents_OLEDragDropEvent);
begin
end;

begin event OLEDragDrop(oleobject Data,long Effect,integer Button,integer Shift,long X,long Y)
end event OLEDragDrop

Private Sub OLEDragDrop(ByVal sender As System.Object, ByVal e As AxEXHTMLLib._IHTMLEvents_OLEDragDropEvent) Handles OLEDragDrop
End Sub

Private Sub OLEDragDrop(ByVal Data As EXHTMLLibCtl.IExDataObject,Effect As Long,ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
End Sub

Private Sub OLEDragDrop(ByVal Data As Object,Effect As Long,ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Data,Effect,Button,Shift,X,Y

PROCEDURE OnOLEDragDrop(oHTML,Data,Effect,Button,Shift,X,Y)
RETURN

Syntax for OLEDragDrop event, /COM version (others), on:

<SCRIPT EVENT="OLEDragDrop(Data,Effect,Button,Shift,X,Y)" LANGUAGE="JScript">
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Function OLEDragDrop(Data,Effect,Button,Shift,X,Y)
End Function
</SCRIPT>

Procedure OnComOLEDragDrop Variant llData Integer llEffect Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
	Forward Send OnComOLEDragDrop llData llEffect llButton llShift llX llY
End_Procedure

METHOD OCX_OLEDragDrop(Data,Effect,Button,Shift,X,Y) CLASS MainDialog
RETURN NIL

// OLEDragDrop event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.

function OLEDragDrop as v (Data as OLE::Exontrol.HTML.1::IExDataObject,Effect as N,Button as N,Shift as N,X as OLE::Exontrol.HTML.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.HTML.1::OLE_YPOS_PIXELS)
end function

function nativeObject_OLEDragDrop(Data,Effect,Button,Shift,X,Y)
return

The following VB sample inserts the names of the files being dragged at the cursor position:

Private Sub HTML1_OLEDragDrop(ByVal Data As EXHTMLLibCtl.IExDataObject, Effect As Long, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If (Data.GetFormat(exCFFiles)) Then
        With Data.Files
            Dim i As Long, s As String
            s = ""
            For i = 0 To .Count - 1
                s = s + .Item(i) + vbCrLf
            Next
            HTML1.SelText = s
        End With
    End If
End Sub

The following C++ sample inserts the names of the files being dragged at the cursor position:

void OnOLEDragDropHTML1(LPDISPATCH Data, long FAR* Effect, short Button, short Shift, long X, long Y) 
{
	if ( EXHTMLLib::IExDataObjectPtr spData( Data ) )
		if ( spData->GetFormat( EXHTMLLib::exCFFiles ) )
		{
			EXHTMLLib::IExDataObjectFilesPtr spFiles = spData->Files;
			if ( spFiles != NULL )
			{
				CString s;
				for ( long i = 0; i < spFiles->Count; i++ )
					s += spFiles->Item[i];
				m_html.SetSelText( s );
			}
		}
}

the sample needs to include definitions for IExDataObject and IExDataObjectFiles objects, by using the #import <exhtml.dll> statement. The #import <exhtml.dll> includes the EXHTMLLib namespace where are defined all objects in the control's type library.

The following VB.NET sample inserts the names of the files being dragged at the cursor position:

Private Sub AxHTML1_OLEDragDrop(ByVal sender As Object, ByVal e As AxEXHTMLLib._IHTMLEvents_OLEDragDropEvent) Handles AxHTML1.OLEDragDrop
    If (e.data.GetFormat(EXHTMLLib.exClipboardFormatEnum.exCFFiles)) Then
        With e.data.Files
            Dim i As Long, s As String = ""
            For i = 0 To .Count - 1
                s = s + .Item(i) + vbCrLf
            Next
            AxHTML1.SelText = s
        End With
    End If
End Sub

The following C# sample inserts the names of the files being dragged at the cursor position:

private void axHTML1_OLEDragDrop(object sender, AxEXHTMLLib._IHTMLEvents_OLEDragDropEvent e)
{
	if (e.data.GetFormat(Convert.ToInt16(EXHTMLLib.exClipboardFormatEnum.exCFFiles)))
	{
		EXHTMLLib.IExDataObjectFiles files = e.data.Files;
		if (files != null)
		{
			string s = "";
			for (int i = 0; i < files.Count; i++)
				s += files[i] + "\r\n";
			axHTML1.SelText = s;
		}
	}
}

The following VFP sample inserts the names of the files being dragged at the cursor position:

*** ActiveX Control Event ***
LPARAMETERS data, effect, button, shift, x, y

if ( data.GetFormat( 15 ) ) then 
	local i, s
	s = ""
	with data.Files
	for i = 0 to .Count - 1
		s = s + .Item(i) + chr(13) + chr(10)
	next
	thisform.HTML1.SelText = s
	endwith
endif