VB Coding Tip: Treeview - Adding Special Features

Monday Nov 18th 2002 by Sam Huggill
Share:

In the third part of this tutorial, we continue to learn more about the treeview control. In this part, learn to add features such as track selection and checkboxes.

In the third part of this tutorial, we continue to learn more about the treeview control. Past parts include:

  • The basics
  • Changing colours

This part allows us to add features such as track selection and checkboxes. It is quite simple, all you need is an API call and a few constants.

This example includes the last two parts code:<\p>

'API Call for Sending the messages

Private Declare Function _
     SendMessage _
   Lib "user32" Alias _
  "SendMessageA" (ByVal hWnd As Long, _
                  ByVal wMsg As Long, _
                  ByVal wParam As Long, _
                   lParam As Long) As Long

Private Declare Function _
     GetWindowLong _
  Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, _
              ByVal nIndex As Long) As Long

Private Declare Function _
      SetWindowLong _
   Lib "user32" Alias _
       "SetWindowLongA" (ByVal hWnd As Long, _
                       ByVal nIndex As Long, _
              ByVal dwNewLong As Long) As Long

'Constants for changing the treeview
Private Const GWL_STYLE = -16&
Private Const TVM_SETBKCOLOR = 4381&
Private Const TVM_GETBKCOLOR = 4383&
Private Const TVS_HASLINES = 2&
Private Const TV_FIRST As Long = &H1100
Private Const TVM_GETTEXTCOLOR As Long = _
                          (TV_FIRST + 32)
Private Const TVM_SETTEXTCOLOR As Long = _
                          (TV_FIRST + 30)
Private Const TVS_CHECKBOXES = &H100
Private Const TVS_TRACKSELECT = &H200
Private Sub Form_Load()
    'This is part 1's code
    'Declare Variables
    Dim mNode As Node
    Dim i As Integer
    'Populate the list box
    List1.AddItem "Node 1"
    List1.AddItem "Node 2"
    List1.AddItem "Node 3"
    'Add the primary node
    Set mNode = TreeView1.Nodes.Add()
    mNode.Text = "Primary Node"
    'Add the nodes from the list box
    For i = 0 To List1.ListCount - 1
        Set mNode = TreeView1.Nodes.Add(1, tvwChild)
        mNode.Text = List1.List(i)
    Next i
    'This is part 2's code
    'Send a message to the treeview telling it to
    'change the background It uses an RGB colour setting
    Call SendMessage(TreeView1.hWnd, _
                     TVM_SETBKCOLOR, _
                     0, _
                     ByVal RGB(255, 204, 0))
    'Same as above except this one tells it to change
    'the text colour
    Call SendMessage(TreeView1.hWnd, _
                     TVM_SETTEXTCOLOR, _
                     0, _
                     ByVal RGB(0, 127, 0)) 
    'This is part 3's code
    'Add the track selection
    Call SetTreeViewAttrib(TreeView1, TVS_TRACKSELECT)
    'Add the checkboxes
    Call SetTreeViewAttrib(TreeView1, TVS_CHECKBOXES)
End Sub
Private Sub SetTreeViewAttrib(c As TreeView, _
                              ByVal Attrib As Long)
    Const GWL_STYLE As Long = -16
    Dim rStyle As Long
    rStyle = GetWindowLong(c.hWnd, GWL_STYLE)
    rStyle = rStyle Or Attrib
    Call SetWindowLong(c.hWnd, GWL_STYLE, rStyle)
End Sub
Share:
Home
Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved