Hide

SftTree/OCX 7.5 - ActiveX Tree Control

Display
Print

CellEditing Sample (VB.NET)

This sample illustrates cell editing using edit controls and combo boxes, cell navigation, uneditable cells, checkbox cell image.

The source code is located at C:\Program Files (x86)\Softelvdm\SftTree OCX 7.5\Samples\Visual Studio - VB.NET\CellEditing\Form1.vb or C:\Program Files\Softelvdm\SftTree OCX 7.5\Samples\Visual Studio - VB.NET\CellEditing\Form1.vb (on 32-bit Windows versions).


    Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command1.Click
        Application.Exit()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ItemIndex As Integer

        ItemIndex = AxSftTree1.Items.Add("Click on a cell to edit")
        AxSftTree1.get_Cell(ItemIndex, 1).Text = "Use Tab/Return keys"
        AxSftTree1.get_Cell(ItemIndex, 2).Text = "Use arrow keys"

        ItemIndex = AxSftTree1.Items.Add("This sample supports cell navigation")
        AxSftTree1.get_Cell(ItemIndex, 1).Text = "Ctrl+Home and Ctrl+End"

        Dim i As Integer
        Dim Item As SftTreeItem
        Dim Cell As SftTreeCell

        For i = 1 To 50

            ItemIndex = AxSftTree1.Items.Add("An item")
            AxSftTree1.get_Cell(ItemIndex, 1).Text = "2nd Column"
            AxSftTree1.get_Cell(ItemIndex, 2).Text = "3rd Column"

            ItemIndex = AxSftTree1.Items.Add("Another item")
            Item = AxSftTree1.get_Item(ItemIndex)
            Item.Level = 1
            Item.Cell(1).Text = "2nd Column"
            Item.Cell(2).Text = "3rd Column"

            ItemIndex = AxSftTree1.Items.Add("This item can't be edited")
            Item = AxSftTree1.get_Item(ItemIndex)
            Item.Level = 2
            Item.EditIgnore = True
            Item.Cell(0).Image.Appearance = SftPictureImageConstants.sftImageCheckboxYes
            Item.Cell(1).Text = "2nd Column (can't edit this item)"
            Item.Cell(2).Text = "3rd Column (can't edit this item)"

            ItemIndex = AxSftTree1.Items.Add("A fourth item")
            Item = AxSftTree1.get_Item(ItemIndex)
            Item.Level = 1
            Cell = AxSftTree1.get_Cell(ItemIndex, 1)
            Cell.Text = "This cell can't be edited"
            Cell.EditIgnore = True
            Cell.Image.Appearance = SftPictureImageConstants.sftImageCheckboxYes
            AxSftTree1.get_Cell(ItemIndex, 2).Text = "3rd Column"
        Next

        AxSftTree1.ColumnsObj.MakeOptimal()
        AxSftTree1.RowHeaders.MakeOptimal()
        AxSftTree1.Items.RecalcHorizontalExtent()
    End Sub

    Private Sub AxSftTree1_ItemClick(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_ItemClickEvent) Handles AxSftTree1.ItemClick
        Dim Img As SftPictureObject
        Dim AreaType As SftTreeAreaTypeConstants
        AreaType = e.areaType
        If AreaType = SftTreeAreaTypeConstants.constSftTreeCellText Then
            ' User clicked on a cell
           AxSftTree1.get_Cell(e.itemIndex, e.colIndex).Edit(0, 0)
        ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeCellGraphic Then
           ' check if check box - toggle
           Img = AxSftTree1.get_Cell(e.itemIndex, e.colIndex).Image
           If Img.Appearance = SftPictureImageConstants.sftImageCheckboxNo Then
               Img.Appearance = SftPictureImageConstants.sftImageCheckboxYes
           ElseIf Img.Appearance = SftPictureImageConstants.sftImageCheckboxYes Then
               Img.Appearance = SftPictureImageConstants.sftImageCheckboxNo
           End If
        End If
    End Sub

    Private Sub AxSftTree1_ItemDblClick(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_ItemDblClickEvent) Handles AxSftTree1.ItemDblClick
        Dim Img As SftPictureObject
        Dim AreaType As SftTreeAreaTypeConstants
        AreaType = e.areaType
        If AreaType = SftTreeAreaTypeConstants.constSftTreeCellText Then
            ' User clicked on a cell
            AxSftTree1.get_Cell(e.itemIndex, e.colIndex).Edit(0, 0)
        ElseIf AreaType = SftTreeAreaTypeConstants.constSftTreeCellGraphic Then
            ' check if check box - toggle
            Img = AxSftTree1.get_Cell(e.itemIndex, e.colIndex).Image
            If Img.Appearance = SftPictureImageConstants.sftImageCheckboxNo Then
                Img.Appearance = SftPictureImageConstants.sftImageCheckboxYes
            ElseIf Img.Appearance = SftPictureImageConstants.sftImageCheckboxYes Then
                Img.Appearance = SftPictureImageConstants.sftImageCheckboxNo
            End If
        End If
    End Sub

    Private Sub AxSftTree1_ToolTipVScroll(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_ToolTipVScrollEvent) Handles AxSftTree1.ToolTipVScroll
        e.text = "Item " & e.itemIndex & " - " & e.text
    End Sub

    Private Sub AxSftTree1_EditAllowed(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_EditAllowedEvent) Handles AxSftTree1.EditAllowed
        ' Last chance to suppress cell editing for a cell
        'If e.itemIndex = 1 And e.colIndex = 1 Then
        '    e.allowed = False
        'End If
    End Sub

    Private Sub AxSftTree1_EditInitializing(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_EditInitializingEvent) Handles AxSftTree1.EditInitializing
        Dim ctrl As System.Windows.Forms.Control

        ' Choose a control based on current column being edited
        If e.editCol = 1 Then
            ctrl = Combo1
        Else
            ctrl = Text1
        End If

        ' LeftPix/TopPix/WidthPix/HeightPix describes the current cell area
        ' we need to return the position and size needed for editing.
        ' In this example, we use the height of the control on the form
        ' and center it over the cell.
        e.topPix = e.topPix + (e.heightPix - ctrl.Height) / 2
        e.heightPix = ctrl.Height

        ' Set the text in the control used for cell editing and
        ' set other control-specific properties
        If ctrl Is Text1 Then
            Text1.Width = 200
            Text1.Text = AxSftTree1.get_Cell(e.editIndex, e.editCol).Text
            Text1.SelectionStart = 0
            Text1.SelectionLength = 999
        Else
            Combo1.Items.Clear()
            Combo1.Items.Add("Option 1")
            Combo1.Items.Add("Option 2")
            Combo1.Items.Add("Option 3")
            Combo1.Items.Add(AxSftTree1.get_Cell(e.editIndex, e.editCol).Text)
            Combo1.Text = AxSftTree1.get_Cell(e.editIndex, e.editCol).Text
        End If

        ' Return the control's window handle
        e.window = ctrl.Handle.ToInt32()
        e.vData = ctrl

        ' Define navigation keys
        ' VK_TAB
        AxSftTree1.CellEditIntercept(9, SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeControlChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeShiftChar)
        ' VK_RETURN
        AxSftTree1.CellEditIntercept(13, SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeControlChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeShiftChar)
        ' VK_HOME
        AxSftTree1.CellEditIntercept(36, SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeControlChar)
        ' VK_END
        AxSftTree1.CellEditIntercept(35, SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeControlChar)

        If ctrl Is Text1 Then
            ' We want these keys just for the edit control.
            ' VK_UP
            AxSftTree1.CellEditIntercept(38, SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeControlChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeShiftChar)
            ' VK_DOWN
            AxSftTree1.CellEditIntercept(40, SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeControlChar Or SftTreeCellEditInterceptStyleConstants.cellEditInterceptSftTreeShiftChar)
        End If
    End Sub

    Private Sub AxSftTree1_EditInitialized(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_EditInitializedEvent) Handles AxSftTree1.EditInitialized
        ' Show the combo box dropdown portion
        If e.vData Is Combo1 Then
            ' We're taking over positioning, so we can drop down the dropdown portion of the control
            e.positioned = True
            Combo1.Left = e.leftPix
            Combo1.Top = e.topPix
            Combo1.Width = e.widthPix
            Combo1.Height = e.heightPix
            Combo1.Enabled = True
            Combo1.Visible = True
            Combo1.Focus()
            Combo1.DroppedDown = True
        End If
    End Sub

    Private Sub AxSftTree1_EditNavigating(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_EditNavigatingEvent) Handles AxSftTree1.EditNavigating
        ' Process key pressed
        AxSftTree1.EditNavigate(e.key, e.shift)
    End Sub

    Private Sub AxSftTree1_EditValidate(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_EditValidateEvent) Handles AxSftTree1.EditValidate
        ' Validate the new cell contents
        Dim S As String
        If e.vData Is Text1 Then
            S = Text1.Text
        Else
            S = Combo1.Text
        End If
        S = S.Trim()
        If S.Length <= 0 Then
            MessageBox.Show("Just to demonstrate data input validation, this example rejects empty cells.  Please enter some data.")
            e.inputValid = False
        End If
    End Sub

    Private Sub AxSftTree1_EditEnding(ByVal sender As Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_EditEndingEvent) Handles AxSftTree1.EditEnding
        ' Save the new cell contents
        If e.saveInput Then
            If e.vData Is Text1 Then
                AxSftTree1.get_Cell(e.editIndex, e.editCol).Text = Text1.Text
            Else
                AxSftTree1.get_Cell(e.editIndex, e.editCol).Text = Combo1.Text
            End If
        End If
        Dim ctrl As Control
        ctrl = e.vData
        ctrl.Visible = False
        ctrl.Enabled = False
    End Sub

	Private Sub AxSftTree1_CaretChange(ByVal sender As System.Object, ByVal e As AxSftTreeLib75._DSftTreeEvents_CaretChangeEvent) Handles AxSftTree1.CaretChange

	End Sub
End Class

Last Updated 08/13/2020 - (email)
© 2024 Softel vdm, Inc.