TreeView的基本操作

TreeView的基本操作
1.增加顶节点
2.增加分节点
3.删除所选节点
4.预防错误的发生
5.补充说明:
6.添加弹出式菜单(有点难)
7.改变背景颜色(调用   API   函数)

 

1.增加顶节点
TreeView1.Nodes.Add   ,   tvwLast,   ,   "顶节点 "   '注:基本的语法看Cmctl198.CHM这里就不说了

 

2.增加分节点
TreeView1.Nodes.Add   1,   tvwChild,   ,   "分节点 "   '1表示一个已经存在的Node对象的索引号,这就是指在索引号为1的Node对象下新建一个分节点,可用下列语句取得你所点击的Node对象的索引号   :
Private   Sub   TreeView1_Click()   ‘点击TreeView时发生
index   =   TreeView1.SelectedItem.index
End   Sub  
下面这句就是在你任意点击的Node对象下建立一个分节点
TreeView1.Nodes.Add   index,   tvwChild,   ,   "分节点 "

 

3.删除节点
TreeView1.Nodes.Remove   index   '删除你所点击的Node对象

 

4.预防错误的发生
(1)没有任何Node对象了,你仍然再删除节点,解决方法如下:
On   Error   GoTo   err
TreeView1.Nodes.Remove   index   '删除节点
err:
Exit   Sub
(2)没有任何Node对象时,你建立分节点,解决方法如下:
On   Error   GoTo   err
TreeView1.Nodes.Add   index,   tvwChild,   ,   "分节点 "   '增加顶节点
Exit   Sub
err:
TreeView1.Nodes.Add   ,   tvwLast,   ,   "顶节点   "   '增加顶节点

 

5.补充说明:
如要显示图像,请加载ImageList控件与TreeView邦定,然后使用如下语句:
TreeView1.Nodes.Add   ,   tvwLast,   ,   "顶节点 ",1   '这里的1就是ImageList控件的图像索引
最好把TreeView的Style属性设置为7,LineStylen属性设置为1会比较好看些。

Hi,如果你把上面的都搞清楚了,就可以学习一下下面的小技巧(有点难度哟)

 

6.增加右键弹出式菜单
Private   Sub   TreeView1_MouseUp(Button   As   Integer,   Shift   As   Integer,   x   As   Single,   y   As   Single)

Dim   nod   As   Node

If   Button   =   vbRightButton   Then   '检测鼠标的点击

Set   nod   =   TreeView1.HitTest(x,   y)   '返回你所点击的Node对象的坐标

On   Error   GoTo   EmptyNode

nod.Selected   =   True   '   设置你所点击的Node对象被选中

On   Error   GoTo   0

' < <下面是你的自定义菜单> >

Me.PopupMenu   mnuPopUp

EmptyNode:

On   Error   GoTo   0

End   If

End   Sub

好了好了,看来你的基本操作都差不多会了,现在就来个难的(没有注释),请向下接着看:

 

7.调用   API   函数改变   TreeView   的背景色
首先声明   API   函数
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

Private   Const   GWL_STYLE   =   -16&
Private   Const   TVM_SETBKCOLOR   =   4381&
Private   Const   TVM_GETBKCOLOR   =   4383&
Private   Const   TVS_HASLINES   =   2&

下面就是改变背景色的代码
Dim   lngStyle   As   Long
Call   SendMessage(TreeView1.hWnd,   TVM_SETBKCOLOR,   0,   ByVal   RGB(255,   0,   0))
'改变背景到红色

lngStyle   =   GetWindowLong(TreeView1.hWnd,   GWL_STYLE)
Call   SetWindowLong(TreeView1.hWnd,   GWL_STYLE,   lngStyle   -   TVS_HASLINES)
Call   SetWindowLong(TreeView1.hWnd,   GWL_STYLE,   lngStyle)

 

 

 

 

 

 结合数据库填充TreeView的实例

 

    Dim rs As New ADODB.Recordset
    Dim i As Integer
    Dim sql As String
    Dim nodX As Node
    Set nodX = TreeView1.Nodes.Add(, , "R", "公安派出所")
    cn.Open pstr
    sql = "select  distinct 工作类型  from 警员人事信息 "
    rs.Open sql, cn, adOpenStatic, adLockReadOnly
    For i = 1 To rs.RecordCount
      If Not IsNumeric(rs!工作类型) Then
          Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C" & CStr(i), rs!工作类型)
      End If
      rs.MoveNext
    Next
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    nodX.EnsureVisible

你可能感兴趣的:(api,function,user,Integer,button,imagelist)