如何使用,
最常用的属性、方法、事件等,由简单例子更好

解决方案 »

  1.   

    实例Private Sub TestView()Set mcnn = New ADODB.Connection
    mcnn.Open "provider=Microsoft.jet.oledb.4.0;persist security info=false;data source=" & App.Path & "\inc\mm.mdb"
    Set rs = New ADODB.Recordset
    Set nodX = tvwTest.Nodes.Add(, , "r", "心理测量系统")TestViewList "r1", "智力类"
    TestViewList "r2", "情感类"
    TestViewList "r3", "健康类"
    TestViewList "r4", "个性类"
    TestViewList "r5", "能力类"
    TestViewList "r6", "职业类"mcnn.Close
    End SubPrivate Sub TestViewList(root As String, name As String)sql = "select 名称 from " & name
    rs.Open sql, mcnn, , , adCmdTextSet nodX = tvwTest.Nodes.Add("r", tvwChild, root, name)
    nodX.EnsureVisible
    Do While Not rs.EOF
    Set nodX = tvwTest.Nodes.Add(root, tvwChild, , rs("名称"))
    rs.MoveNext
    Loop
    rs.CloseEnd Sub
      

  2.   

    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 NodeIf Button = vbRightButton Then '检测鼠标的点击Set nod = TreeView1.HitTest(x, y) '返回你所点击的Node对象的坐标On Error GoTo EmptyNodenod.Selected = True ' 设置你所点击的Node对象被选中On Error GoTo 0'<<下面是你的自定义菜单>>Me.PopupMenu mnuPopUpEmptyNode:On Error GoTo 0End IfEnd 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 LongPrivate Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate 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)
      

  3.   

    TreeView 控件应用详解一、概述
      TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。创建了TreeView控件之后,可以通过设置属性与调用方法对各Node对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。Collapse、Expand和NodeClick三个事件也提供编程功能。  Node对象使用Root、Parent、Child、FirstSibling、Next、Previous和 LastSibling属性。在代码中可通过检索对Node对象的引用,从而在树上定位。也可以使用键盘定位。UP ARROW键和DOWN ARROW键向下循环穿过所有展开的Node对象。从左到右、从上到下地选择Node对象。若在树的底部,选择便跳回树的顶部,必要时滚动窗口。RIGHT ARROW键和LEFT ARROW键也穿过所有展开的Node对象,但是如果选择了未展开的 Node之后再按RIGHT ARROW键,该Node便展开;第二次按该键,选择将移向下一个Node。相反,若扩展的Node有焦点,这时再按LEFT ARROW键,该Node便折回。如果按下ANSI字符集中的键,焦点将跳转至以那个字母开头的最近的Node。后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。  控件的外观有八种可用的替换样式,它们是文本、位图、直线和+/-号的组合,Node 对象可以任一种组合出现。  TreeView控件使用由ImageList属性指定的ImageList控件,来存储显示于Node对象的位图和图标。任何时刻,TreeView 控件只能使用一个ImageList。这意味着,当 TreeView控件的Style属性被设置成显示图象的样式时,TreeView控件中每一项的旁边都有一个同样大小的图象。  发行注意TreeView控件是COMCTL32.OCX文件中的一组ActiveX控件的一部分。为了在应用程序中使用TreeView控件,必须将COMCTL32.OCX文件添加到工程中。在发行应用程序时,要在用户的Microsoft Windows System或System32目录中安装COMCTL32.OCX文件。二、常用属性
    1、Nodes属性返回对TreeView控件的Node对象的集合的引用。
      语法:object.Nodes
     ? ject所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
      说明:可以使用标准的集合方法(例如:Add和Remove方法)操作Node对象。可以按其索引或存储在Key属性中的唯一键来访问集合中的每个元素。2、Style属性返回或设置图形类型(图象、文本、+/-号、直线)以及出现在 TreeView 控件中每一Node对象上的文本的类型。
      语法:object.Style [ = number]
      Style 语法包含下面部分:
    部分 描述 
    object 对象表达式,其值是“应用于”列表中的一个对象。 
    number 指定图形类型的整数,请参阅“设置值”中的描述。   设置值
      number 的设置值是:
    设置值 描述 
    0 仅为文本。 
    1 图象和文本。 
    2 +/- 号和文本。 
    3 +/- 号,图象和文本。 
    4 直线和文本。 
    5 直线,图象和文本。 
    6 直线,+/- 号和文本。 
    7 (缺省)直线,+/- 号,图象和文本。 
      
      说明:若Style属性设置为包含直线的值騆ineStyle属性就确定了直线的外观。如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。
    3、Sorted属性返回或设置一值,此值确定Node对象的子节点是否按字母顺序排列;返回或设置一值,此值确定TreeView控件的根层节点是否按字母顺序排列。
      语法:object.Sorted [ = boolean]
      Sorted属性语法包含下面部分:
    部分 描述 
    object 对象表达式,其值是“应用于”列表中的一个对象。 
    boolean 布尔表达式,表示 Node 对象是否已被排序如“设置值”中描述。   boolean的设置值是:
    设置值 描述 
    True Node 对象根据它们的 Text 属性按字母顺序排列。其 Text 属性由数字开始的 Node 对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。 
    False Node 对象不排序。    
      说明:Sorted属性有两种用法,第一,在TreeView控件的根(顶)层排列Node对象,第二,对任何单个Node对象的立即子节点排序。
      例如,下面的代码是对TreeView控件的根节点排序: 
    TreeView1.Sorted = True 顶层Node对象被排序。下面的例子表示创建Node对象时如何设置Sorted属性:
    Dim nodX As Node
    Set nodX = TreeView1.Nodes.Add(,,,"Parent Node")
    nodX.Sorted = True
      设置 Sorted 属性为True仅对当前Nodes集合排序。在TreeView控件中添加新的Node对象时,必须再次设置 Sorted 属性为 True,以便对添加的 Node 对象排列。三、常用方法
    1、Add 方法在Treeview控件的Nodes集合中添加一个Node对象。
      语法:
    object.Add(relative, relationship, key, text, image, selectedimage)  Add 方法的语法包含下面部分:
    部分 描述 
    object 必需的。对象表达式,其值是“应用于”列表中的一个对象 
    relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。 
    relationship 可选的。指定的 Node 对象的相对位置,如设置值中所述。 
    key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。 
    text 必需的。在 Node 中出现的字符串。 
    image 可选的。在关联的 ImageList 控件中的图象的索引。 
    selectedimage 可选的。在关联的 ImageList 控件中的图象的索引,在 Node 被选中时显示。 
      设置值
    relationship 的设置值是:
    常数 值 描述 
    tvwFirst 0 首的节点。该 Node 和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之前。 
    tvwLast 1 最后的节点。该 Node 和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之后。任何连续地添加的节点可能位于最后添加的节点之后 
    tvwNext 2 (缺省)下一个节点。该 Node 位于在 relative 中被命名的节点之后。 
    tvwPrevious 3 前一个节点。该 Node 位于在 relative 中被命名的节点之前。 
    tvwChild 4 (缺省)子节点。该 Node 成为在 relative 中被命名的节点的子节点。   注意:如果在relative中没有被命名的Node对象,则新节点被放在节点顶层的最后位置。
      说明:Nodes 集合是一个基于 1 的集合。在添加Node对象时,它被指派一个索引号,该索引号被存储在Node对象的Index属性中。这个最新成员的Index属性值就是Node集合的Count属性的值。因为Add方法返回对新建立的Node对象的引用,所以使用这个引用来设置新Node的属性十分方便。2、GetVisibleCount方法返回固定在 TreeView 控件的内部区域的 Node 对象的个数。
      语法:object.GetVisibleCount
      object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
      说明: Node 对象的个数取决于在一个窗口中能固定多少行。总的行数取决于控件的高度和 Font 对象的 Size 属性。该计数包括列表底部的只能看到一局部的项。可以使用 GetVisibleCount 属性确保可视的最小行数,这样可以精确地访问一个层。如果最小行数是不可视的,可以用Height属性重新设置TreeView的大小。四、常用事件
    NodeClick事件在一个Node对象被单击时,这个事件便发生。
      语法:Private Sub object_NodeClick(ByVal node As Node)
      NodeClick事件的语法包含下面部分:
    部分 描述 
    object 对象表达式,其值是“应用于”列表中的一个对象。 
    node 对被点取的 Node 对象的引用。   说明:在单击节点对象之外的TreeView控件的任何部位,标准的Click事件发生。当单击某个特定的Node对象时,NodeClick事件发生;NodeClick事件也返回对特定的Node对象的引用,在下一步操作之前,这个引用可用来使这个Node对象可用。 NodeClick事件发生在标准的Click事件之前。
      

  4.   

    Public Sub LoadDirToTreeV(strPath As String)Dim i As Integer, ii As IntegerDim DirName As StringDir1.Path = ""C:\""Dir1.Path = strPathOn Error Resume NextTreeView1.Nodes.Add , , strPath, strPathFor i = 0 To Dir1.ListCount - 1DirName = SplitString(Dir1.List(i), ""\"")TreeView1.Nodes.Add strPath, 4, Dir1.List(i), DirNameDir2.Path = Dir1.List(i)For ii = 0 To Dir2.ListCount - 1DirName = SplitString(Dir2.List(ii), ""\"")TreeView1.Nodes.Add Dir1.List(i), 4, Dir2.List(ii), DirNameNext iiNext iEnd SubPublic Function SplitString(Expression As String, SplitFlage As String) As StringDim StringLen As Integer, i As IntegerDim strTemp1 As String, strTemp2 As StringStringLen = Len(Expression)For i = 1 To StringLenstrTemp1 = Right$(Expression, i)strTemp2 = Left$(strTemp1, 1)If strTemp2 = SplitFlage ThenSplitString = Right$(strTemp1, i - 1)Exit FunctionEnd IfNext iSplitString = """"End FunctionPrivate Sub Command1_Click()LoadDirToTreeV ""C:\""End SubPrivate Sub TreeView1_Expand(By Val Node As MSComctlLib.Node)LoadDirToTreeV Node.KeyEnd Sub
      

  5.   

    为树状浏览器控件添加节点和子节点   用ADD方法添加一个新节点到树状浏览器的NODES集合时,可以声明它是和已存在的节点所联系起来的。通常使用ADD方法,其语法如下:    Nodes.Add(relative,[relationship][,key][,text][,image][,selectedimage])   各个参数的意义如下:    relationship参数是通过关系节点参数与新节点连接的另一个节点; 
       relationship参数可能是以下情况: 
         tvwlast--1;该节点置于所有其他的在relative中被命名的同一级别的节点的后面 
         tvwNext--2;该节点置于在relative中被命名节点的后面 
         tvwPrevius--3;该节点置于在relative中被命名的节点的前面 
         tvwChild--4;该节点成为在relative中被命名的节点的的子节点   下面是一个例子:    Dimnode1,node2,node3,node4asNode 
       setNode1=TreeView1.Nodes.Add 
       TreeView1.Nodes(1).text="node1" 
       TreeView1.Nodes(1).key="node1" 
       Setnode2=treeview.nodes.add("node1",tvwChild,"node2") 
       TreeView1.Nodes(2).text="node2" 
       TreeView1.Nodes(2).key="node2"   依次插入节点即可。 2、为节点插入图象    treeview1.node(3).image="leaf"   注意我们一般从imagelist中指定图象 3、处理节点的点击,怎样才能知道树状浏览器的哪一个节点被点击了呢?可以用NodeClick事件:    publicsubtreeview1_nodeclick(byvalnodeascomctllib.node) 
       text1.text="youclick"&node.text 
       endsub
      

  6.   

    http://www.wuyouschool.com.cn/public/efei/TreeView.vbs
      

  7.   

    学习实例:ADO用Treeview显示数据库http://itbooks.web165.net/bbs/upload/2003111022235635894.rar