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 get the item from point. Use the ColumnFromPoint property to get the column from point. Use the DateFromPoint property to specify the date from the cursor.

The following VB sample prints the cell's caption that has been clicked:

Private Sub Gantt1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ' Converts the container coordinates to client coordinates
    X = X / Screen.TwipsPerPixelX
    Y = Y / Screen.TwipsPerPixelY
    Dim h As HITEM
    Dim c As Long
    Dim hit As EXGANTTLibCtl.HitTestInfoEnum
    ' Gets the item from (X,Y)
    h = Gantt1.ItemFromPoint(X, Y, c, hit)
    If Not (h = 0) Then
        Debug.Print Gantt1.Items.CellCaption(h, c) & " HT = " & hit
    End If
End Sub

If you need to add a context menu based on the item you can use the MouseUp event, like in the following VB sample ( the sample uses the Exontrol's ExPopupMenu Component ):

Private Sub Gantt1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If (Button = 2) Then
        ' Converts the container coordinates to client coordinates
        X = X / Screen.TwipsPerPixelX
        Y = Y / Screen.TwipsPerPixelY
        Dim h As HITEM
        Dim c As Long, hit as Long
        ' Gets the item from (X,Y)
        h = Gantt1.ItemFromPoint(X, Y, c, hit)
        If Not (h = 0) Then
            Dim i As Long
            PopupMenu1.Items.Add Gantt1.Items.CellCaption(h, c)
            i = PopupMenu1.ShowAtCursor
        End If
    End If
End Sub

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

#include "Items.h"

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 OnMouseDownGantt1(short Button, short Shift, long X, long Y) 
{
	int c = 0, hit = 0, hItem = m_gantt.GetItemFromPoint( X, Y, &c, &hit );
	if ( ( hItem != 0 ) || ( c != 0 ) )
	{
		CItems items = m_gantt.GetItems();
		COleVariant vtItem( hItem ), vtColumn( c );
		CString strCaption = V2S( &items.GetCellCaption( vtItem, vtColumn ) ), strOutput;
		strOutput.Format( "Cell: '%s', Hit = %08X\n", strCaption, hit );
		OutputDebugString( strOutput );
	}
}

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

Private Sub AxGantt1_MouseDownEvent(ByVal sender As Object, ByVal e As AxEXGANTTLib._IGanttEvents_MouseDownEvent) Handles AxGantt1.MouseDownEvent
    With AxGantt1
        Dim i As Integer, c As Integer, hit As EXGANTTLib.HitTestInfoEnum
        i = .get_ItemFromPoint(e.x, e.y, c, hit)
        If (Not (i = 0) Or Not (c = 0)) Then
            Debug.WriteLine("Cell: " & .Items.CellCaption(i, c) & " Hit: " & hit.ToString())
        End If
    End With
End Sub

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

private void axGantt1_MouseDownEvent(object sender, AxEXGANTTLib._IGanttEvents_MouseDownEvent e)
{
	int c = 0;
	EXGANTTLib.HitTestInfoEnum hit;
	int i = axGantt1.get_ItemFromPoint( e.x, e.y, out c,out hit );
	if ( ( i != 0 ) || ( c != 0 ) )
	{
		string s = axGantt1.Items.get_CellCaption( i,c ).ToString();
		s = "Cell: " + s + ", Hit: " + hit.ToString();
		System.Diagnostics.Debug.WriteLine( s );
	}
}

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

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

local c, hit
c = 0
hit = 0
with thisform.Gantt1
	.Items.DefaultItem = .ItemFromPoint( x, y, @c, @hit )
	if ( .Items.DefaultItem <> 0 ) or ( c <> 0 )
		wait window nowait .Items.CellCaption( 0, c ) + " " + Str( hit )
	endif
endwith

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