event MouseDown (Button as Integer, Shift as Integer, X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS)
Occurs when the user presses a mouse button.

TypeDescription
Button as Integer An integer that identifies the button that was pressed to cause the event.
Shift as Integer An integer that corresponds to the state of the SHIFT, CTRL, and ALT keys when the button specified in the button argument is pressed or released.
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

Use a MouseDown or MouseUp event procedure to specify actions that will occur when a mouse button is pressed or released. Unlike the Click and DblClick events, MouseDown and MouseUp events lets you distinguish between the left, right, and middle mouse buttons. You can also write code for mouse-keyboard combinations that use the SHIFT, CTRL, and ALT keyboard modifiers. Use the ItemFromPoint property to retrieve the cell over the cursor. Use the ColumnFromPoint property to get the column from point.

Syntax for MouseDown event, /NET version, on:

private void MouseDownEvent(object sender,short Button,short Shift,int X,int Y)
{
}

Private Sub MouseDownEvent(ByVal sender As System.Object,ByVal Button As Short,ByVal Shift As Short,ByVal X As Integer,ByVal Y As Integer) Handles MouseDownEvent
End Sub

Syntax for MouseDown event, /COM version, on:

private void MouseDownEvent(object sender, AxEXLISTLib._IListEvents_MouseDownEvent e)
{
}

void OnMouseDown(short Button,short Shift,long X,long Y)
{
}

void __fastcall MouseDown(TObject *Sender,short Button,short Shift,int X,int Y)
{
}

procedure MouseDown(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

procedure MouseDownEvent(sender: System.Object; e: AxEXLISTLib._IListEvents_MouseDownEvent);
begin
end;

begin event MouseDown(integer Button,integer Shift,long X,long Y)
end event MouseDown

Private Sub MouseDownEvent(ByVal sender As System.Object, ByVal e As AxEXLISTLib._IListEvents_MouseDownEvent) Handles MouseDownEvent
End Sub

Private Sub MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
End Sub

Private Sub MouseDown(ByVal Button As Integer,ByVal Shift As Integer,ByVal X As Long,ByVal Y As Long)
End Sub

LPARAMETERS Button,Shift,X,Y

PROCEDURE OnMouseDown(oList,Button,Shift,X,Y)
RETURN

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

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

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

Procedure OnComMouseDown Short llButton Short llShift OLE_XPOS_PIXELS llX OLE_YPOS_PIXELS llY
	Forward Send OnComMouseDown llButton llShift llX llY
End_Procedure

METHOD OCX_MouseDown(Button,Shift,X,Y) CLASS MainDialog
RETURN NIL

void onEvent_MouseDown(int _Button,int _Shift,int _X,int _Y)
{
}

function MouseDown as v (Button as N,Shift as N,X as OLE::Exontrol.List.1::OLE_XPOS_PIXELS,Y as OLE::Exontrol.List.1::OLE_YPOS_PIXELS)
end function

function nativeObject_MouseDown(Button,Shift,X,Y)
return

The following VB sample displays the cell's caption from the cursor:

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim c As Long, i As Long, hit As HitTestInfoEnum
    With List1
        i = .ItemFromPoint(X / Screen.TwipsPerPixelX, Y / Screen.TwipsPerPixelY, c, hit)
        If (i >= 0) Then
            If (c >= 0) Then
                Debug.Print .Items.Caption(i, c)
            End If
        End If
    End With
End Sub

The getCellPos function determines the client coordinates of the cell:

 

Private Sub getCellPos(ByVal l As EXLISTLibCtl.List, ByVal nItem As Long, ByVal nColumn As Long, x As Long, y As Long)
    x = -l.ScrollPos(False)
    With l
        Dim c As EXLISTLibCtl.Column
        For Each c In .Columns
            If (c.Visible) Then
                If (c.Position < .Columns(nColumn).Position) Then
                    x = x + c.Width
                End If
            End If
        Next
        y = 0
        If (.HeaderVisible) Then
            y = y + .HeaderHeight
        End If
        With .Items
            Dim i As Long
            i = .FirstVisibleItem
            While Not (i = nItem) And (i >= 0)
                y = y + .ItemHeight(i)
                i = .NextVisibleItem(i)
            Wend
        End With
    End With
End Sub

The getCellPos method gets the x, y client coordinates of the cell ( nItem, nColumn ). The nItem indicates the index of the item, and the nColumn indicates the index of the column. Use the ClientToScreen API function to convert the client coordinates to screen coordinates like bellow:

Private Type POINTAPI
        x As Long
        y As Long
End Type
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long

In the following MouseDown handler the ItemFromPoint method determines the cell from the cursor. The sample displays an exPopupMenu control at the beginning of the cell, when user right clicks the cell:

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = 2 Then
        With List1
            Dim i As Long, c As Long, hit As HitTestInfoEnum
            i = .ItemFromPoint(x / Screen.TwipsPerPixelX, y / Screen.TwipsPerPixelY, c, hit)
            If (i >= 0) Then
                ' Selects the item when user does a right click
                List1.Items.SelectItem(i) = True
                ' Gets the client coordinates of the cell
                Dim xCell As Long, yCell As Long
                getCellPos List1, i, c, xCell, yCell
                ' Converts the client coordinates to the screen coordinates
                Dim p As POINTAPI
                p.x = xCell
                p.y = yCell
                ClientToScreen List1.hwnd, p
                ' Displays the exPopupMenu control at specified position
                PopupMenu1.HAlign = EXPOPUPMENULibCtl.exLeft
                Debug.Print "You have selected " & PopupMenu1.Show(p.x, p.y)
            End If
        End With
    End If
End Sub

The following C++ sample displays the caption of the cell being clicked:

void OnMouseDownList1(short Button, short Shift, long X, long Y) 
{
	long c = 0, hit = 0, i = m_list.GetItemFromPoint( X, Y, &c, &hit );
	if ( i >= 0 )
	{
		CItems items = m_list.GetItems();
		CString strCaption = V2S( &items.GetCaption( i, COleVariant( c ) ) );
		OutputDebugString( strCaption );
	}
}

The following C++ sample displays the caption of the cell being clicked:

void OnMouseDownList1(short Button, short Shift, long X, long Y) 
{
	long c = 0, hit = 0, i = m_list.GetItemFromPoint( X, Y, &c, &hit );
	if ( i >= 0 )
	{
		CItems items = m_list.GetItems();
		CString strCaption = V2S( &items.GetCaption( i, COleVariant( c ) ) );
		OutputDebugString( strCaption );
	}
}

The following VB.NET sample displays the caption of the cell being clicked:

Private Sub AxList1_MouseDownEvent(ByVal sender As Object, ByVal e As AxEXLISTLib._IListEvents_MouseDownEvent) Handles AxList1.MouseDownEvent
    Dim c As Integer, hit As EXLISTLib.HitTestInfoEnum
    Dim i As Integer = AxList1.get_ItemFromPoint(e.x, e.y, c, hit)
    If (i >= 0) Then
        With AxList1.Items
            Debug.Write(.Caption(i, c))
        End With
    End If
End Sub

The following C# sample displays the caption of the cell being clicked:

private void axList1_MouseDownEvent(object sender, AxEXLISTLib._IListEvents_MouseDownEvent e)
{
	EXLISTLib.HitTestInfoEnum hit;
	int c = 0, i = axList1.get_ItemFromPoint(e.x, e.y, out c, out hit);
	if (i >= 0)
	{
		System.Diagnostics.Debug.WriteLine(axList1.Items.get_Caption(i, c).ToString());
	}
}

The following VFP sample displays the caption of the cell being clicked:

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

local c, i, hit
With thisform.List1
	c = 0
	hit = 0
	i = .ItemFromPoint(x, y, @c, @hit)
    If (i >= 0)
 		wait window nowait .Items.Caption(i, c)
    EndIf
EndWith