Imports AxSftTreeLib70
Imports SftTreeLib70
Imports Softelvdm.OLEConvert
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents ItemContextMenu As System.Windows.Forms.ContextMenu
Friend WithEvents menuItem1 As System.Windows.Forms.MenuItem
Friend WithEvents menuItem2 As System.Windows.Forms.MenuItem
Friend WithEvents menuItem3 As System.Windows.Forms.MenuItem
Friend WithEvents menuItem4 As System.Windows.Forms.MenuItem
Public WithEvents Label5 As System.Windows.Forms.Label
Friend WithEvents ItemImageList As System.Windows.Forms.ImageList
Friend WithEvents PlusMinusImageList As System.Windows.Forms.ImageList
Friend WithEvents AxSftTree1 As AxSftTreeLib70.AxSftTree
Friend WithEvents UglyCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents PlusMinusCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents ButtonImageList As System.Windows.Forms.ImageList
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents SftHelperComponent1 As Softelvdm.OCXHelper.SftHelperComponent
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
Me.ItemContextMenu = New System.Windows.Forms.ContextMenu()
Me.menuItem1 = New System.Windows.Forms.MenuItem()
Me.menuItem2 = New System.Windows.Forms.MenuItem()
Me.menuItem3 = New System.Windows.Forms.MenuItem()
Me.menuItem4 = New System.Windows.Forms.MenuItem()
Me.ItemImageList = New System.Windows.Forms.ImageList(Me.components)
Me.PlusMinusImageList = New System.Windows.Forms.ImageList(Me.components)
Me.AxSftTree1 = New AxSftTreeLib70.AxSftTree()
Me.Label5 = New System.Windows.Forms.Label()
Me.UglyCheckBox = New System.Windows.Forms.CheckBox()
Me.PlusMinusCheckBox = New System.Windows.Forms.CheckBox()
Me.Button1 = New System.Windows.Forms.Button()
Me.ButtonImageList = New System.Windows.Forms.ImageList(Me.components)
Me.Label1 = New System.Windows.Forms.Label()
Me.SftHelperComponent1 = New Softelvdm.OCXHelper.SftHelperComponent(Me.components)
CType(Me.AxSftTree1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'ItemContextMenu
'
Me.ItemContextMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.menuItem1, Me.menuItem2, Me.menuItem3, Me.menuItem4})
'
'menuItem1
'
Me.menuItem1.Index = 0
Me.menuItem1.Text = "Edit"
'
'menuItem2
'
Me.menuItem2.Index = 1
Me.menuItem2.Text = "Insert"
'
'menuItem3
'
Me.menuItem3.Index = 2
Me.menuItem3.Text = "Append"
'
'menuItem4
'
Me.menuItem4.Index = 3
Me.menuItem4.Text = "Delete"
'
'ItemImageList
'
Me.ItemImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
Me.ItemImageList.ImageSize = New System.Drawing.Size(16, 16)
Me.ItemImageList.ImageStream = CType(resources.GetObject("ItemImageList.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.ItemImageList.TransparentColor = System.Drawing.Color.Yellow
'
'PlusMinusImageList
'
Me.PlusMinusImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
Me.PlusMinusImageList.ImageSize = New System.Drawing.Size(14, 14)
Me.PlusMinusImageList.ImageStream = CType(resources.GetObject("PlusMinusImageList.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.PlusMinusImageList.TransparentColor = System.Drawing.Color.White
'
'AxSftTree1
'
Me.AxSftTree1.Location = New System.Drawing.Point(8, 48)
Me.AxSftTree1.Name = "AxSftTree1"
Me.AxSftTree1.OcxState = CType(resources.GetObject("AxSftTree1.OcxState"), System.Windows.Forms.AxHost.State)
Me.AxSftTree1.Size = New System.Drawing.Size(358, 372)
Me.AxSftTree1.TabIndex = 21
'
'Label5
'
Me.Label5.BackColor = System.Drawing.SystemColors.Control
Me.Label5.Cursor = System.Windows.Forms.Cursors.Default
Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label5.ForeColor = System.Drawing.SystemColors.ControlText
Me.Label5.Location = New System.Drawing.Point(376, 168)
Me.Label5.Name = "Label5"
Me.Label5.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.Label5.Size = New System.Drawing.Size(88, 201)
Me.Label5.TabIndex = 20
Me.Label5.Text = "Click on the SftTree/OCX control and hit F1 to access online help for SftTree/OCX" & _
" 6.0"
Me.Label5.Visible = False
'
'UglyCheckBox
'
Me.UglyCheckBox.Location = New System.Drawing.Point(208, 424)
Me.UglyCheckBox.Name = "UglyCheckBox"
Me.UglyCheckBox.Size = New System.Drawing.Size(189, 23)
Me.UglyCheckBox.TabIndex = 19
Me.UglyCheckBox.Text = "Use ""Plain"" Buttons"
'
'PlusMinusCheckBox
'
Me.PlusMinusCheckBox.Location = New System.Drawing.Point(8, 424)
Me.PlusMinusCheckBox.Name = "PlusMinusCheckBox"
Me.PlusMinusCheckBox.Size = New System.Drawing.Size(190, 23)
Me.PlusMinusCheckBox.TabIndex = 18
Me.PlusMinusCheckBox.Text = "Show Plus/Minus Graphic"
'
'Button1
'
Me.Button1.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Button1.Location = New System.Drawing.Point(376, 8)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(81, 30)
Me.Button1.TabIndex = 17
Me.Button1.Text = "Close"
'
'ButtonImageList
'
Me.ButtonImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
Me.ButtonImageList.ImageSize = New System.Drawing.Size(40, 9)
Me.ButtonImageList.ImageStream = CType(resources.GetObject("ButtonImageList.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.ButtonImageList.TransparentColor = System.Drawing.Color.Yellow
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(8, 8)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(366, 37)
Me.Label1.TabIndex = 16
Me.Label1.Text = "Click on header buttons to sort books or reorder the second and third column usin" & _
"g column drag && drop."
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.CancelButton = Me.Button1
Me.ClientSize = New System.Drawing.Size(464, 446)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.Label1, Me.AxSftTree1, Me.Label5, Me.UglyCheckBox, Me.PlusMinusCheckBox})
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D
Me.Name = "Form1"
Me.Text = "Softel vdm, Inc. - BookTable Sample"
CType(Me.AxSftTree1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
'--locate-marker--
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Application.Exit()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AxSftTree1.BulkUpdate = True
' set default item graphic. This can also be done at design time
AxSftTree1.Items.ItemImageExpanded.SetImageListH(ItemImageList.Handle.ToInt32(), 0)
AxSftTree1.Items.ItemImageExpandable.SetImageListH(ItemImageList.Handle.ToInt32(), 1)
AxSftTree1.Items.ItemImageLeaf.SetImageListH(ItemImageList.Handle.ToInt32(), 2)
' set column header pictures
AxSftTree1.get_Header(0).Image.Appearance = SftPictureImageConstants.sftImageSortAsc
AxSftTree1.get_Header(1).Image.Clear()
AxSftTree1.get_Header(2).Image.Clear()
Dim R As Random
R = New Random()
' set the cell font for books
Dim fnt As Font
fnt = New Font(AxSftTree1.Font, FontStyle.Bold)
Dim pFont As stdole.IFontDisp
pFont = OLECvt.ToIFontDisp(fnt)
Dim bk As Integer
For bk = 1 To 4
' add a book
Dim bookIndex As Integer
bookIndex = AxSftTree1.Items.Add("Book " & bk)
AxSftTree1.get_Cell(bookIndex, 1).Text = "Description for book " + bk.ToString()
Dim size As Integer
If bk = 1 Then
size = R.Next(1, 99)
Else
size = R.Next(1, 999)
End If
AxSftTree1.get_Cell(bookIndex, 2).Text = size.ToString()
AxSftTree1.get_Item(bookIndex).Data = size
' add chapters
Dim ch As Integer
For ch = 1 To 2
Dim index As Integer
index = AxSftTree1.Items.Add("Chapter " & ch)
AxSftTree1.get_Item(index).Level = 1
' add sections
Dim sect As Integer
For sect = 1 To 2
index = AxSftTree1.Items.Add("Section " & sect)
AxSftTree1.get_Item(index).Level = 2
Next
Next
' after adding the book and all dependent items, we
' collapse the item, so it's up to the user to expand it
AxSftTree1.get_Item(bookIndex).Collapse(False)
' set font
AxSftTree1.get_Cell(bookIndex, 0).Font = pFont
Next
' End of Mass-Update
AxSftTree1.BulkUpdate = False
' Make columns optimal
AxSftTree1.ColumnsObj.MakeOptimal()
' allow horizontal scrolling
AxSftTree1.Items.RecalcHorizontalExtent()
End Sub
Private Sub PlusMinusCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlusMinusCheckBox.CheckedChanged
If PlusMinusCheckBox.Checked Then
AxSftTree1.Items.PlusMinusImageExpandable.NETImageObject = PlusMinusImageList.Images(0)
AxSftTree1.Items.PlusMinusImageExpanded.NETImageObject = PlusMinusImageList.Images(1)
Else
AxSftTree1.Items.PlusMinusImageExpandable.Clear()
AxSftTree1.Items.PlusMinusImageExpanded.Clear()
End If
End Sub
Private Sub UglyCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UglyCheckBox.CheckedChanged
If UglyCheckBox.Checked Then
AxSftTree1.ButtonPicture = ButtonImageList.Images(0)
Else
AxSftTree1.ButtonPicture = Nothing
End If
End Sub
Private Sub SortHeader(ByVal ColNum As Integer)
If AxSftTree1.get_Header(ColNum).Image.Appearance = SftPictureImageConstants.sftImageSortAsc Then
' Sort the data. Note that column 2 is sorted by Item.Data, which is
' an integer value (book size in pages)
If ColNum = 2 Then
AxSftTree1.Items.SortDependents(-1, ColNum, SftTreeSortTypeConstants.sortSftTreeDscItemData)
Else
AxSftTree1.Items.SortDependents(-1, ColNum, SftTreeSortTypeConstants.sortSftTreeDescending)
End If
AxSftTree1.get_Header(ColNum).Image.Appearance = SftPictureImageConstants.sftImageSortDesc
Else
AxSftTree1.get_Header(0).Image.Clear()
AxSftTree1.get_Header(1).Image.Clear()
AxSftTree1.get_Header(2).Image.Clear()
' Sort the data. Note that column 2 is sorted by Item.Data, which is
' an integer value (book size in pages)
If ColNum = 2 Then
AxSftTree1.Items.SortDependents(-1, ColNum, SftTreeSortTypeConstants.sortSftTreeAscItemData)
Else
AxSftTree1.Items.SortDependents(-1, ColNum, SftTreeSortTypeConstants.sortSftTreeAscending)
End If
AxSftTree1.get_Header(ColNum).Image.Appearance = SftPictureImageConstants.sftImageSortAsc
End If
End Sub
Private Sub AxSftTree1_ItemClick(ByVal sender As Object, ByVal e As AxSftTreeLib70._DSftTreeEvents_ItemClickEvent) Handles AxSftTree1.ItemClick
Dim AreaType As SftTreeAreaTypeConstants
AreaType = e.areaType
Dim Button As SftTreeButtonConstants
Button = e.button
' respond to click in column header with left mouse button
If AreaType = SftTreeAreaTypeConstants.constSftTreeColumnHeader And Button = SftTreeButtonConstants.constSftTreeLeftButton Then
SortHeader(e.colIndex)
ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeExpandAll Then
AxSftTree1.get_Item(e.itemIndex).Expand(False, True)
End If
End Sub
Private Sub AxSftTree1_ItemDblClick(ByVal sender As Object, ByVal e As AxSftTreeLib70._DSftTreeEvents_ItemDblClickEvent) Handles AxSftTree1.ItemDblClick
Dim AreaType As SftTreeAreaTypeConstants
AreaType = e.areaType
Dim Button As SftTreeButtonConstants
Button = e.button
' Respond to click in column header with left mouse button
If AreaType = SftTreeAreaTypeConstants.constSftTreeColumnRes And Button = SftTreeButtonConstants.constSftTreeLeftButton Then
AxSftTree1.get_Column(e.colIndex).MakeOptimal()
AxSftTree1.Items.RecalcHorizontalExtent()
ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeColumnHeader And Button = SftTreeButtonConstants.constSftTreeLeftButton Then
SortHeader(e.colIndex)
End If
End Sub
Private Sub menuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuItem1.Click
MessageBox.Show("This sample doesn't implement any actions for the item menu. Try the column headers instead.")
End Sub
Private Sub menuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuItem2.Click
MessageBox.Show("This sample doesn't implement any actions for the item menu. Try the column headers instead.")
End Sub
Private Sub menuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuItem3.Click
MessageBox.Show("This sample doesn't implement any actions for the item menu. Try the column headers instead.")
End Sub
Private Sub menuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuItem4.Click
MessageBox.Show("This sample doesn't implement any actions for the item menu. Try the column headers instead.")
End Sub
Private Sub AxSftTree1_ContextMenuEvent(ByVal sender As Object, ByVal e As AxSftTreeLib70._DSftTreeEvents_ContextMenuEvent) Handles AxSftTree1.ContextMenuEvent
Dim P As Point
P = AxSftTree1.PointToScreen(New Point(e.x, e.y))
' Determine click context menu for header or item
Dim L As Integer, T As Integer, H As Integer, W As Integer
AxSftTree1.Headers.GetPositionPix(L, T, W, H)
If e.x >= L And e.x < L + W And e.y >= T And e.y <= T + H Then
HeaderMenu(PointToClient(P))
Return
End If
' determine item right-clicked
Dim ItemIndex As Integer
ItemIndex = AxSftTree1.Items.HitTestPix(e.x, e.y)
If ItemIndex >= 0 And ItemIndex < AxSftTree1.Items.Count Then
AxSftTree1.Items.Current = ItemIndex
AxSftTree1.get_Item(ItemIndex).Selected = True
AxSftTree1.CancelMode()
ItemContextMenu.Show(Me, PointToClient(P))
End If
End Sub
Private Sub menuHeader_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim mItem As MenuItem
mItem = sender
Dim colIndex As Integer
colIndex = mItem.Index
If mItem.Checked Then
AxSftTree1.get_Column(colIndex).WidthPix = 0
Else
AxSftTree1.get_Column(colIndex).MakeOptimal()
End If
AxSftTree1.Items.RecalcHorizontalExtent()
mItem.Checked = Not mItem.Checked
End Sub
Private Sub menuHeaderShowAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
AxSftTree1.ColumnsObj.MakeOptimal()
End Sub
Private Sub HeaderMenu(ByVal cursor As Point)
Dim Menu As System.Windows.Forms.ContextMenu
Menu = New ContextMenu()
Dim mItem As System.Windows.Forms.MenuItem
Dim Count As Integer
Count = 0
Dim C As Integer
For C = 0 To AxSftTree1.ColumnsObj.Count - 1
mItem = New System.Windows.Forms.MenuItem()
mItem.Text = AxSftTree1.get_Header(C).Text
If AxSftTree1.get_Column(C).WidthPix > 0 Then
mItem.Checked = True
Count = Count + 1
Else
mItem.Checked = False
End If
AddHandler mItem.Click, AddressOf Me.menuHeader_Click
Menu.MenuItems.Add(mItem)
Next
If Count <= 1 Then
For C = 0 To AxSftTree1.ColumnsObj.Count - 1
If Menu.MenuItems(C).Checked Then
Menu.MenuItems(C).Enabled = False
Else
Menu.MenuItems(C).Enabled = True
End If
Next
End If
mItem = New System.Windows.Forms.MenuItem("-")
Menu.MenuItems.Add(mItem)
mItem = New System.Windows.Forms.MenuItem("&Show All")
mItem.Enabled = (Count < AxSftTree1.ColumnsObj.Count)
AddHandler mItem.Click, AddressOf Me.menuHeaderShowAll_Click
Menu.MenuItems.Add(mItem)
AxSftTree1.CancelMode()
Menu.Show(Me, cursor)
End Sub
End Class