SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftMask/OCX 7.0 - Masked Edit Control
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftPrintPreview/DLL 2.0 - Print Preview Control (discontinued)
SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftDirectory 3.5 - File/Folder Control (discontinued)
SftMask/OCX 7.0 - Masked Edit Control
SftOptions 1.0 - Registry/INI Control (discontinued)
SftPrintPreview/OCX 1.0 - Print Preview Control (discontinued)
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftTabs/NET 6.0 - Tab Control (discontinued)
SftTree/NET 2.0 - Tree Control
This sample illustrates drop down buttons and popup menus.
The source code is located at C:\Program Files (x86)\Softelvdm\SftButton OCX 3.0\Samples\Visual Studio - CSharp\Popup\Form1.cs or C:\Program Files\Softelvdm\SftButton OCX 3.0\Samples\Visual Studio - CSharp\Popup\Form1.cs (on 32-bit Windows versions).
private void button1_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
private int m_WorldIndex = 0;
private void SetImage()
{
// Update the button with the next image in the image list
// to get the spinning globe effect
axSftButton4.Image1.NETImageObject = imageList1.Images[m_WorldIndex];
++m_WorldIndex;
if (m_WorldIndex >= imageList1.Images.Count) m_WorldIndex = 0;
}
private void timer1_Tick(object sender, System.EventArgs e)
{
// Update the button bitmap every so often to get the
// spinning globe effect
SetImage();
}
// In order to support .NET 1.0 through the latest, we use TrackPopupMenu
// to nicely right-align the popup menu (Windows API), because the
// ContextMenu class doesn't support defining the alignment
[DllImport("user32.dll", EntryPoint="TrackPopupMenu")]
public static extern IntPtr TrackPopupMenu(IntPtr Handle, uint uFlags, int x, int y, int nReserved, IntPtr hwnd, IntPtr prcRect);
const int TPM_RIGHTALIGN = 0x0008;
const int TPM_TOPALIGN = 0x0000;
const int TPM_LEFTBUTTON = 0x0000;
private void menuItem1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Default Action selected");
}
private void menuItem2_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Action 1 selected");
}
private void menuItem3_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Action 2 selected");
}
private void menuItem4_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Action 3 selected");
}
private void axSftButton1_ClickEvent(object sender, System.EventArgs e)
{
// Invoke the default action, because the button was clicked
menuItem1_Click(axSftButton1, new System.EventArgs());
}
private void axSftButton1_DropDownClick(object sender, System.EventArgs e)
{
// The drop down button was clicked. Display a popup menu
// right-aligned with the right edge of the button
Point pt = new Point(axSftButton1.Location.X + axSftButton1.Size.Width,
axSftButton1.Location.Y + axSftButton1.Size.Height);
pt = PointToScreen(pt);
axSftButton1.CancelMode();
TrackPopupMenu(contextMenu1.Handle, TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, pt.X, pt.Y, 0, this.Handle, IntPtr.Zero);
}
private void axSftButton2_ClickEvent(object sender, System.EventArgs e)
{
// Invoke the default action, because the button was clicked
menuItem1_Click(axSftButton2, new System.EventArgs());
}
private void axSftButton2_DropDownClick(object sender, System.EventArgs e)
{
// The drop down button was clicked. Display a popup menu
// right-aligned with the right edge of the button
Point pt = new Point(axSftButton2.Location.X + axSftButton2.Size.Width,
axSftButton2.Location.Y + axSftButton2.Size.Height);
pt = PointToScreen(pt);
axSftButton2.CancelMode();
TrackPopupMenu(contextMenu1.Handle, TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, pt.X, pt.Y, 0, this.Handle, IntPtr.Zero);
}
private void axSftButton3_ClickEvent(object sender, System.EventArgs e)
{
// Invoke the default action, because the button was clicked
menuItem1_Click(axSftButton3, new System.EventArgs());
}
private void axSftButton3_DropDownClick(object sender, System.EventArgs e)
{
// The drop down button was clicked. Display a popup menu
// right-aligned with the right edge of the button
Point pt = new Point(axSftButton3.Location.X + axSftButton3.Size.Width,
axSftButton3.Location.Y + axSftButton3.Size.Height);
pt = PointToScreen(pt);
axSftButton3.CancelMode();
TrackPopupMenu(contextMenu1.Handle, TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, pt.X, pt.Y, 0, this.Handle, IntPtr.Zero);
}
private void axSftButton4_ClickEvent(object sender, System.EventArgs e)
{
// Invoke the default action, because the button was clicked
menuItem1_Click(axSftButton4, new System.EventArgs());
}
private void axSftButton4_DropDownClick(object sender, System.EventArgs e)
{
// The drop down button was clicked. Display a popup menu
// right-aligned with the right edge of the button
Point pt = new Point(axSftButton4.Location.X + axSftButton4.Size.Width,
axSftButton4.Location.Y + axSftButton4.Size.Height);
pt = PointToScreen(pt);
axSftButton4.CancelMode();
TrackPopupMenu(contextMenu1.Handle, TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, pt.X, pt.Y, 0, this.Handle, IntPtr.Zero);
}
private void axSftButton5_ClickEvent(object sender, System.EventArgs e)
{
// Invoke the default action, because the button was clicked
menuItem1_Click(axSftButton5, new System.EventArgs());
}
private void axSftButton5_DropDownClick(object sender, System.EventArgs e)
{
// The drop down button was clicked. Display a popup menu
// right-aligned with the right edge of the button
Point pt = new Point(axSftButton5.Location.X + axSftButton5.Size.Width,
axSftButton5.Location.Y + axSftButton5.Size.Height);
pt = PointToScreen(pt);
axSftButton5.CancelMode();
TrackPopupMenu(contextMenu1.Handle, TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, pt.X, pt.Y, 0, this.Handle, IntPtr.Zero);
}