property ComboBox.ItemFromPoint (X as OLE_XPOS_PIXELS, Y as OLE_YPOS_PIXELS, ColIndex as Long, HitTestInfo as HitTestInfoEnum) as HITEM
Retrieves the item from point.

 TypeDescription 
   X as OLE_XPOS_PIXELS A single that specifies the current X location of the mouse pointer. The x values is always expressed in client coordinates.  
   Y as OLE_YPOS_PIXELS A single that specifies the current Y location of the mouse pointer. The y values is always expressed in client coordinates.  
   ColIndex as Long A long expression that indicates on return, the column where the point belongs.  
   HitTestInfo as HitTestInfoEnum A HitTestInfoEnum expression that determines on return the position of the cursor within the cell.  
   HITEM A long expression that indicates the column where the point belongs.  

Use the ItemFromPoint property to get the item from the point specified by the {X,Y}. The X and Y coordinates are expressed in client coordinates, so a conversion must be done in case your coordinates are relative to the screen or to other window. If the X parameter is -1 and Y parameter is -1 the ItemFromPoint property determines the handle of the item from the cursor. The ItemFromPoint returns 0 if no item is over the cursor. Use the ColumnFromPoint property to retrieve the column from point. Use the SelectableItem property to specify the user can select an item.

The following VB sample prints the caption of the cell over the cursor:

Private Sub ComboBox1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    With ComboBox1
        Dim i As HITEM, c As Long, hit As EXCOMBOBOXLibCtl.HitTestInfoEnum
        i = .ItemFromPoint(X / Screen.TwipsPerPixelX, Y / Screen.TwipsPerPixelY, c, hit)
        If (i >= 0) Then
            Debug.Print .Items.CellCaption(i, c) & " HT = " & hit
        End If
    End With
End Sub

The following VB sample displays the index of the icon being clicked ( use the CloseOnDblClick property to specify whether the user closes the drop down portion of the control by a single or double click ):

Private Sub ComboBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim h As HITEM, c As Long, hit As HitTestInfoEnum
    h = ComboBox1.ItemFromPoint(X / Screen.TwipsPerPixelX, Y / Screen.TwipsPerPixelY, c, hit)
    If (Not h = 0) Then
        If exHTCellIcon = (hit And exHTCellIcon) Then
            Debug.Print "The index of icon being clicked is: " & (hit And &HFFFF0000) / 65536
        End If
    End If
End Sub

The following C++ sample prints the cell from the caption and the hit test code:

void OnMouseMoveCombobox1(short Button, short Shift, long X, long Y) 
{
	long c = 0, hit = 0, i = m_combobox.GetItemFromPoint( X, Y, &c, &hit );
	if ( i != 0 )
	{
		CString strOutput = V2S( &m_combobox.GetItems().GetCellCaption(COleVariant(i), COleVariant(c) ) );
		strOutput += " HT = ";
		strOutput += V2S(COleVariant(hit));
		strOutput += "\r\n";
		OutputDebugString( strOutput );
	}
}

The following VB.NET sample prints the cell from the caption and the hit test code:

Private Sub AxComboBox1_MouseMoveEvent(ByVal sender As Object, ByVal e As AxEXCOMBOBOXLib._IComboBoxEvents_MouseMoveEvent) Handles AxComboBox1.MouseMoveEvent
    With AxComboBox1
        Dim i As Integer, c As Integer, hit As EXCOMBOBOXLib.HitTestInfoEnum
        i = .get_ItemFromPoint(e.x, e.y, c, hit)
        If (i >= 0) Then
            Debug.WriteLine(.Items.CellCaption(i, c) & " HT = " & hit.ToString())
        End If
    End With
End Sub

The following C# sample prints the cell from the caption and the hit test code:

private void axComboBox1_MouseMoveEvent(object sender, AxEXCOMBOBOXLib._IComboBoxEvents_MouseMoveEvent e)
{
	EXCOMBOBOXLib.HitTestInfoEnum hit;
	int c = 0, i = axComboBox1.get_ItemFromPoint(e.x, e.y, out c, out hit);
	if (i != 0)
		System.Diagnostics.Debug.WriteLine(axComboBox1.Items.get_CellCaption(i, c).ToString() + " HT = " + hit.ToString() );
}

The following VFP sample prints the cell from the caption and the hit test code:

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

With thisform.ComboBox1
        local c, hit
        c = 0
        hit = 0
        .Items.DefaultItem = .ItemFromPoint(X , Y, @c, @hit)
        If (.Items.DefaultItem >= 0) Then
            wait window nowait .Items.CellCaption(0, c) + " HT = " + str(hit)
        EndIf
EndWith

 


Send comments on this topic.
1999-2017 Exontrol.COM, Software. All rights reserved.