设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12345下一页
返回列表 发新帖
查看: 16030|回复: 45
打印 上一主题 下一主题

[转帖][分享]TreeView控件使用教程

[复制链接]
跳转到指定楼层
1#
发表于 2006-4-14 21:25:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. TreeView 控件            


TreeView 控件显示 Node 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。





语法


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 控件是 MSCOMCTL.OCX 文件中的一组 ActiveX 控件的一部分。为了在应用程序中使用 TreeView 控件,必须将 MSCOMCTL.OCX 文件
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2006-4-14 21:26:00 | 只看该作者
2. Sorted 属性(TreeView 控件)      


返回或设置一值,此值确定 Node 对象的子节点是否按字母顺序排列。


返回或设置一值,此值确定 TreeView 控件的根层节点是否按字母顺序排列。





语法


object.Sorted [ = boolean]


Sorted 属性语法包含下面部分:





部分 描述


object 对象表达式,其值是“应用于”列表中的一个对象。


boolean 布尔表达式,表示 Node 对象是否已被排序如“设置值”中描述。








设置值


boolean 的设置值是:


设置值 描述


True Node 对象根据它们的 Text 属性按字母顺序排列。其 Text 属性由数字开始的 Node 对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。


False Node 对象不排序。





说明


Sorted 属性有两种用法,第一,在 TreeView 控件的根(顶)层排列 Node 对象,第二,对任何单个 Node 对象的立即子节点排序。例如,下面的代码是对 TreeView 控件的根节点排序:





Private Sub Command1_Click()


< 0cm 0cm 0pt; TEXT-INDE
3#
 楼主| 发表于 2006-4-14 21:26:00 | 只看该作者
3. EnsureVisible 方法  


这个方法确保指定的 ListItem 或 Node 对象是可视的。如果需要,这个方法可展开 Node 对象并滚动 TreeView 控件。该方法仅可滚动 ListView 控件。





语法


object.EnsureVisible


object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。





返回值


值 描述


True 如果 ListView 或 TreeView 控件必须滚动与/或扩展以显露该对象,该方法返回 True。


False 如果不需滚动与/或展开,该方法返回 False。





说明


一个特定的 Node 或 ListItem 对象可能深藏于 TreeView 或 ListView 控件中,当要使其为可视时,使用 EnsureVisible 方法。


如果 Scroll 属性设置为 False,则该方法将不会在 TreeView 控件上起作用。
4#
 楼主| 发表于 2006-4-14 21:27:00 | 只看该作者
4. Node 对象和 Nodes 集合


Node 对象是 TreeView 控件中的一项,它包含图像和文本。


Nodes 集合包含一个或多个 Node 对象。





语法


treeview.Nodes


treeview.Nodes.Item(index)


以上语法行,按照标准集合语法分别引用集合与集合中的单独元素。


treeview 对象表达式,其值是 TreeView 控件。


index 整数或字符串,它唯一地标识 Nodes 集合的一个成员。整数是 Index 属性的值,字符串是 Key 属性的值。





说明


节点可包含文本和图片。然而,要使用图片,必须用 ImageList 属性关联一个 ImageList 控件。


图片可以根据节点的状态而改变;例如,如果将 SelectedImage 属性设置为来自关联的 ImageList 的图像,则被选中的节点可拥有与未选中的节点不同的图片。
5#
 楼主| 发表于 2006-4-14 21:28:00 | 只看该作者
5. Add 方法(Nodes 集合)   


在 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 的设置值是:





常数 值 描述


<FONT face="Times New
6#
 楼主| 发表于 2006-4-14 21:29:00 | 只看该作者
6. Root 属性(Node 对象)   


返回对所选 Node 的根 Node 对象的引用。





语法


object.Root


object 所在处代表是对象表达式,其值是“应用于”列表中的对象





说明


Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 各属性全将返回对另一个 Node 对象的引用。因此,可以同时引用并执行对 Node 的操作,如下所示:





With TreeView1.Nodes(x).Root


   .Text = "New text"


   .Key = "New key"


   .SelectedImage = 3


End With





也可以将对象变量设置为被引用的 Node,如下所示:





Dim NodRoot As Node


'得到对节点 x 的根的引用。


Set NodRoot = TreeView1.Nodes(x).Root


'用此引用执行对根节点的操作。


With nodRoot


   .Text = "New text"   '改变文本。


   .Key = "New key"   '改变键。


   .SelectedImage = 3   '改变 SelectedIma
7#
 楼主| 发表于 2006-4-14 21:30:00 | 只看该作者
7. Parent 属性(Node 对象)      


这个属性返回或设置 Node 对象的父对象。仅在运行时可用。





语法


object.Parent[ = node]


Parent 属性的语法包含下面部分:





部分 描述


object 对象表达式,其值是“应用于”列表中的一个对象。


node 变成该对象的父对象的 Node 对象。





说明


在运行时,设置这个属性为一个对象的操作不能搞成一个循环,否则便发生错误。例如,不能将任何 Node 设置成为其后代的子 Node。





Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:





With TreeView1.Nodes(x).Parent


   .Text = "New text"


   .Key = "New key"


   .SelectedImage = 3


End With





也可以将对象变量设置为引用的 Node,如下所示:





Dim NodParent As Node
8#
 楼主| 发表于 2006-4-14 21:31:00 | 只看该作者
Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)

   '如果用户没移动鼠标,或在无效区释放它。

   If TreeView1.DropHighlight Is Nothing Then

      indrag = False

      Exit Sub

   Else

      '设置被拖动的节点的 parent 属性为目标节点。

      On Error GoTo checkerror '阻止循环错误。

      Set nodX.Parent = TreeView1.DropHighlight

      Cls

      Print TreeView1.DropHighlight.Text & _

      " is parent of " & nodX.Text

      '释放 DropHighlight 引用。

      Set TreeView1.DropHighlight = Nothing

      indrag = False

      Exit Sub '如未发生错误则退出。

   End If



checkerror:

   '定义表示 Visual Basic 错误代码的常数。

   Const CircularError = 35614

   If Err.Number = CircularError Then

      Dim msg As String

      msg = "A node can't be made a child of its own children."

      '显示带有一个感叹号图标

      '和“确定”与“取消”按钮的消息框。

      If MsgBox(msg, vbExclamation & vbOKCancel) = vbOK Then

         '释放<FONT f
9#
 楼主| 发表于 2006-4-14 21:32:00 | 只看该作者
9. Children 属性      


这个属性返回包含在 Node 对象中的各子 Node 对象的个数。





语法


object.Children


object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。





说明


在执行一个影响子节点的操作之前,可用 Children 属性检查 Node 对象是否有子节点。例如,以下代码在检索第一个 Node 的 Text 属性之前,使用 Child 属性检查子节点的存在。





Private Sub TreeView1_NodeClick(ByVal Node As Node)


   If Node.Children > 0 Then


      MsgBox Node.Child.Text


   End If


End Sub





Children 属性示例


这个例子在 TreeView 控件中放置几个 Node 对象。这组代码检查 Node 是否有子节点。如果有,则显示子节点的文本。为试用此例,在窗体上安放一个 TreeView 控件,并在窗体的声明部分中粘贴下面的代码。运行此例,单击 Node 对象以选择它,然后单击该窗体来察看 Node 对象的子节点的文本。





Option Explicit


Private Sub Form_Click()


   Dim strC As String


   Dim N As Integer


   If TreeView1.SelectedItem.Children > 0 Then '有子节点。


<o:p
10#
 楼主| 发表于 2006-4-14 21:32:00 | 只看该作者
10. FirstSibling 属性(Node 对象)


这个属性返回对 TreeView 控件中的 Node 对象的第一个相邻对象的引用。





语法


object.FirstSibling


object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象





说明


第一个相邻节点是出现在一个节点层中第一个位置上的 Node。实际上到底是哪一个 Node 出现在第一个位置取决于在那一层上的 Node 对象是否被排序,这由 Sorted 属性确定。





Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:





With TreeView1.Nodes(x).FirstSibling


   .Text = "New text"


   .Key = "New key"


   .SelectedImage = 3


End With





也可以将对象变量设置为引用的 Node,如下所示:





Dim NodFirstSib As Node


'获取 Node x 的第一个相邻节点的引用。


Set NodFirstSib = TreeView1.Nodes(x).FirstSibling


'使用这个引用执行对第一个相邻 Node 的操
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-1 19:42 , Processed in 0.091455 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表