vbtreeview控件_第1页
vbtreeview控件_第2页
vbtreeview控件_第3页
vbtreeview控件_第4页
vbtreeview控件_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TreeView概述TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。TreeView一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。创建了TreeView控件之后,可以通过设置属性与调用方法对各Node对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回Node 对象来显示或隐藏所有子节点。Collapse、Expand和 NodeClick三个事件也提供编程功能。Node对象使用Root 、 Parent 、 Child 、 FirstSibling、 Next 、 Previous

2、 和 LastSibling属性。在代码中可通过检索对Node对象的引用,从而在树上定位。也可以使用键盘定位。UPARROW 键和 DOWNARROW 键向下循环穿过所有展开的Node对象。从左到右、从上到下地选择Node对象。若在树的底部,选择便跳回树的顶部,必要时滚动窗口。 RIGHT ARROW键和 LEFTARROW 键也穿过所有展开的Node 对象,但是如果选择了未展开的Node 之后再按 RIGHTARROW键,该 Node便展开;第二次按该键,选择将移向下一个Node 。相反,若扩展的Node 有焦点,这时再按LEFTARROW 键,该Node便折回。如果按下ANSI字符集中的键

3、,焦点将跳转至以那个字母开头的最近的 Node 。后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。控件的外观有八种可用的替换样式,它们是文本、位图、直线和+/- 号的组合, Node对象可以任一种组合出现。TreeView控件使用由 ImageList 属性指定的ImageList 控件,来存储显示于Node对象的位图和图标。任何时刻,TreeView控件只能使用一个ImageList 。这意味着, 当 TreeView 控件的 Style属性被设置成显示图象的样式时,TreeView控件中每一项的旁边都有一个同样大小的图象。发行注意TreeView 控件是 COMCTL

4、32.OCX文件中的一组ActiveX控件的一部分。为了在应用程序中使用TreeView控件,必须将COMCTL32.OCX文件添加到工程中。在发行应用程序时,要在用户的Microsoft WindowsSystem或 System32目录中安装COMCTL32.OCX文件。属性DropHighlight属性( ListView,TreeView控件),Indentation属性,LabelEdit属性,LineStyle属性,Nodes 属性,PathSeparator属性( TreeView控件),SelectedItem属性( ActiveX控件),Sorted属性( TreeView控

5、件),Style 属性( TreeView控件),Checkboxes属性,FullRowSelect属性,Scroll 属性,SingleSel属性,HotTracking属性,TabIndex属性,Tag 属性,Visible属性,DragIcon属性,DragMode属性,CausesValidation属性,MouseIcon属性,TabStop属性,HelpContextID属性,Name 属性,Parent属性,Container属性,ToolTipText属性,WhatsThisHelpID属性,OLEDragMode属性( ActiveX控件),OLEDropMode属性( A

6、ctiveX控件),Height, Width 属性( ActiveX控件),Index属性( ActiveX 控件),Left,Top 属性( ActiveX 控件),Object属性( ActiveX 控件),Appearance属性( ActiveX控件),BorderStyle属性( ActiveX控件),Enable属性( ActiveX控件),Font 属性( ActiveX控件),HideSelection属性( ActiveX控件),hWnd 属性( ActiveX控件),MousePointer属性( ActiveX控件),ImageList属性( ActiveX控件)。方法

7、GetVisibleCount方法,HitTest方法( ListView,TreeView控件),StartLabelEdit方法,SetFocus方法,Drag 方法,Move 方法,ZOrder方法,ShowWhatsThis方法,OLEDrag方法( ActiveX控件),Refresh方法( ActiveX控件)。-常用属性1、Nodes属性返回对TreeView控件的Node对象的集合的引用。语法:object.Nodes? ject 所在处代表一个对象表达式,其值是说明:可以使用标准的集合方法(例如:“应用于 ”列表中的一个对象。Add 和 Remove方法)操作Node对象。可

8、以按其索引或存储在Key属性中的唯一键来访问集合中的每个元素。2、Style属性返回或设置图形类型(图象、文本、+/- 号、直线)以及出现在TreeView控件中每一Node对象上的文本的类型。语法:object.Style =numberStyle语法包含下面部分:部分object描述对象表达式,其值是“应用于 ”列表中的一个对象。number指定图形类型的整数,请参阅“设置值 ”中的描述。设置值number的设置值是:设置值描述0仅为文本。1图象和文本。2+/-号和文本。3+/-号,图象和文本。4直线和文本。5直线,图象和文本。6直线, +/- 号和文本。7(缺省)直线,+/-号,图象和文

9、本。说明:若 Style 属性设置为包含直线的值,则LineStyle 属性就确定了直线的外观。如果Style 属性设置为不含直线的值,则LineStyle 属性将被忽略。3、Sorted 属性返回或设置一值,此值确定Node 对象的子节点是否按字母顺序排列;返回或设置一值,此值确定TreeView控件的根层节点是否按字母顺序排列。语法: object.Sorted = booleanSorted 属性语法包含下面部分:部分描述object对象表达式,其值是“应用于 ”列表中的一个对象。boolean布尔表达式,表示Node 对象是否已被排序如 “设置值 ”中描述。boolean的设置值是:设

10、置值描述TrueNode对象根据它们的Text属性按字母顺序排列。其Text属性由数字开始的Node 对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。FalseNode 对象不排序。说明: Sorted 属性有两种用法,第一,在TreeView控件的根(顶)层排列Node 对象,第二,对任何单个Node对象的立即子节点排序。例如,下面的代码是对TreeView控件的根节点排序:TreeView1.Sorted= True顶层 Node 对象被排序。下面的例子表示创建Node对象时如何设置Sorted 属性:DimnodXAs NodeSetnodX= Tree

11、View1.Nodes.Add(,"ParentNode")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必需的。对象表达式,其

12、值是“应用于 ”列表中的一个对象relative可选的。已存在的Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数relationship 中找到。relationship可选的。指定的Node 对象的相对位置,如设置值中所述。key可选的。唯一的字符串,可用于用Item 方法检索 Node 。text必需的。在 Node 中出现的字符串。image可选的。在关联的ImageList控件中的图象的索引。selectedimage可选的。在关联的ImageList控件中的图象的索引,在Node被选中时显示。设置值relationship的设置值是:常数值描述tvwFirs

13、t0首的节点。该Node 和在 relative 中被命名的节点位于同一层,并位于所有同层节点之前。tvwLast1最后的节点。该Node和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之后。任何连续地添加的节点可能位于最后添加的节点之后tvwNext2(缺省)下一个节点。该Node 位于在relative 中被命名的节点之后。tvwPrevious3前一个节点。该Node位于在 relative中被命名的节点之前。tvwChild4(缺省)子节点。该Node 成为在 relative 中被命名的节点的子节点。注意:如果在relative中没有被命名的Node 对象,则新

14、节点被放在节点顶层的最后位置。说明: Nodes集合是一个基于1 的集合。在添加Node 对象时,它被指派一个索引号,该索引号被存储在Node对象的Index 属性中。这个最新成员的Index属性值就是Node 集合的Count属性的值。因为Add 方法返回对新建立的Node 对象的引用,所以使用这个引用来设置新Node 的属性十分方便。2、GetVisibleCount方法返回固定在TreeView控件的部区域的Node对象的个数。语法:object.GetVisibleCountobject所在处代表一个对象表达式,其值是“应用于 ”列表中的一个对象。说明:Node对象的个数取决于在一个窗

15、口中能固定多少行。总的行数取决于控件的高度和Font对象的Size属性。该计数包括列表底部的只能看到一局部的项。可以使用GetVisibleCount属性确保可视的最小行数,这样可以精确地访问一个层。如果最小行数是不可视的,可以用Height属性重新设置TreeView的大小。常用事件NodeClick事件在一个Node对象被单击时,这个事件便发生。语法:PrivateSubobject_NodeClick(ByValnodeAsNode)NodeClick事件的语法包含下面部分:部分描述object对象表达式,其值是“应用于 ”列表中的一个对象。node对被点取的Node对象的引用。说明:在

16、单击节点对象之外的TreeView控件的任何部位,标准的Click事件发生。当单击某个特定的Node对象时,NodeClick事件发生;NodeClick事件也返回对特定的Node对象的引用,在下一步操作之前,这个引用可用来使这个Node对象可用。NodeClick事件发生在标准的Click事件之前。语法object.Add(relative,relationship,key,text,image,selectedimage)Add方法的语法包含下面部分:部分描述object必需的。对象表达式,其值是“应用于 ”列表中的一个对象relative可选的。已存在的Node对象的索引号或键值。新节点

17、与已存在的节点间的关系,可在下一个参数relationship中找到。relationship可选的。指定的Node对象的相对位置,如设置值中所述。key可选的。唯一的字符串,可用于用Item方法检索 Node 。text必需的。在Node 中出现的字符串。image可选的。在关联的ImageList控件中的图像的索引。selectedimage可选的。在关联的ImageList控件中的图像的索引,在Node被选中时显示。设置值relationship的设置值是:常数值描述tvwFirst0首的节点。该Node和在 relative中被命名的节点位于同一层,并位于所有同层节点之前。tvwLas

18、t1最后的节点。该Node和在 relative 中被命名的节点位于同一层,并位于所有同层节点之后。任何连续地添加的节点可能位于最后添加的节点之后tvwNext2 (缺省)下一个节点。该Node位于在relative中被命名的节点之后。tvwPrevious3 前一个节点。该Node位于在relative中被命名的节点之前。tvwChild4(缺省)子节点。该Node成为在relative中被命名的节点的子节点。注意 如果在relative中没有被命名的Node对象,则新节点被放在节点顶层的最后位置。说明Nodes集合是一个基于1 的集合。在添加 Node对象时,它被指派一个索引号,该索引号被

19、存储在Node 对象的 Index属性中。这个最新成员的Index 属性值就是Node集合的Count 属性的值。因为 Add方法返回对新建立的Node对象的引用,所以使用这个引用来设置新Node的属性十分方便。以下例子添加几个具有相同属性的Node对象:Dim nodX As Node '声明对象变量。DimIasInteger ' 声明计数器变量。ForI= 1to4SetnodX=TreeView1.Nodes.Add(,"Node" & Cstr(i)'使用引用来设置其它属性,如Enabled 。nodX.Enabled= True&

20、#39;把图像属性设置为在关联的ImageList中的图像3。nodX.ExpandedImage= 3Next I理解层级概念, 层级理论上可以有无限级,一般用到四, 五级也够用了。最上级的只能有一个,我们把它叫做“爷” ,接下来是“父” ,再是“子” ,再是“”,接下来是“曾” .,汇总如下:“爷,父,子, ,曾”,这里是 5 级关系,除了“爷”只能有一个外,其余可以有无限个。记住这些,下面要用。1 学习直接用代码将数据填充到树控件中。为什么要先学习直接用代码将数据填充到树控件中?因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中

21、的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。目的:我们要在树控件中建立如下的一个3 层级关系水果|_苹果|_红富士|_国光|_葡萄|_红提子|_青提子解释:水果包含2 种,一种是苹果,一种是葡萄,苹果又包含2 种,一种是红富士,一种是国光,葡萄也如此。在这里:“爷”是水果, “父”是苹果,葡萄, “子”是红富士,国光,红提子,青提子。概括如下:爷(只能有一个) :水果父(这里有2 个):父 1:苹果;父2:葡萄子(这里有4 个):子 1:红富士(父1 苹果的子);子 2:国光(父1 苹果的子);子 3:红提子(父2 葡萄的子);子 4:青提子(父2 葡萄的子)下面我们在ACCE

22、SS 中栽下这棵树,步骤如下:1、新建一个窗体,在窗体上放置两个控件,一个是Treeview ,一个是Imagelist如何找到这两个控件?Treeview 控件在“工具箱”的榔头加扳手图标(其他控件)中选“ Microsoft Treeview Control,Version 6.0" ;Imagelist 控件在“工具箱” 的榔头加扳手图标 (其他控件)中选“ MicrosoftImagelist Control,Version 6.0" 。Treeview 控件大家都明白干什么用的,Imagelist 控件是干什么用呢?原来这个控件是放图标用的,如果你想在树控件中显示

23、图标的,这个图标都将储存在ImageList控件中。2、设置这两个控件的属性首先要讲清楚控件的属性设置有2 种,一种是设置这个控件在ACCESS 中的属性,比如名称等。一种是设置这个控件本身的属性。要设置这个控件在ACCESS 中的属性,选中控件后按鼠标右键选“属性”就可以了。跟我们平时设置文本框什么的一样。要设置这个控件本身的属性,只要双击这个控件就可以了。1)设置 Treeview 控件在 ACCESS 中的名称属性,将名称设置为“Treeview"2)设置 Imagelist 控件在 ACCESS 中的名称属性,将名称设置为“Image"2)设置 Imagelist

24、控件本身的属性, 双击控件后, 在弹出来的设置框中选“ Images",单击“ InsertPicture" 按钮,在你电脑中选择你需要的图标。在“ Key: ”栏中填入“ K1 ”。其他默认设置不用改。3)设置Treeview 控件本身的属性,双击控件后,在弹出来的设置框中选“General”,在这个选项面版中有很多项设置,大多数是设置树控件的显示格式,你自己慢慢研究。这里我们将第一项“ Style" 选 7,在第五项“Imagelist" 选项中将我们放置的Imagelist 控件“ Image" 选上。这项设置就将图标和树控件联系了起来。

25、3、写代码将数据填充到树控件中代码写在哪里?我们希望窗体一打开,数据就自动填充在树控件中,所以这个代码就写在窗体的加载事件中,代码及解释如下:Private Sub Form_Load()'* -'* 用代码将数据填充到树控件中'* -Dim Nodeindex As Node'*-'* 解释:定义Node'*Node 是树控件的对象'* 每个 Node 都有三个东西,图标,文本,索引值'* 图标和文本都是实际显示出来的,索引值是隐含的'*-'设置最顶级的“爷”:'* -爷 ", " 水

26、果 ", "K1")Nodeindex.Sorted = True'*-'* 树控件填充数据的方法是Nodes.Add'* 括号是 Add 方法的参数'* 在这里“爷”是索引值,“水果”是将显示的文本,“ K1 ”是图标的索引值'*Sorted 是指 Node 的排序, True 就是指采用排序,默认是按拼音'* 第一,二个参数是空的'* 具体的参数设置以后你可以慢慢详细研究'*-'设置第二级“父”'* -爷 ", tvwChild, "父 1", &qu

27、ot; 苹果 ", "K1")Nodeindex.Sorted = True爷 ", tvwChild, " 父 2", " 葡萄 ", "K1")Nodeindex.Sorted = True'*-'* 第一个参数“爷”是指这一层对应上层“爷”的'*tvwChild参数是规定格式,指相对来说,这一层是爷的子层'* “父 1”是索引值,因为“父”有2 个,而索引值是唯一的,所以要编号,用“父1”“父2”分开'* “苹果”“葡萄”是要显示的文本,K1是显示图

28、标的索引值'* 现在知道为什么在“爷”层设置时,第一,第二个参数是空的,因为这是最顶层'*-'设置第三级“子”'* -父 1", tvwChild, " 子 1", " 红富士 ", "K1")Nodeindex.Sorted = True父 1", tvwChild, " 子 2", " 国光 ", "K1")Nodeindex.Sorted = True父 2", tvwChild, " 子 3&qu

29、ot;, " 红提子 ", "K1")Nodeindex.Sorted = True父 2", tvwChild, " 子 4", " 青提子 ", "K1")Nodeindex.Sorted = True'*-'* 第一个参数 “父 1,2”是指这一层对应上层“父” 的,但要注意对应的是“父1”还是“父2”'*tvwChild参数是规定格式,指相对来说,这一层是父的子层'* “子 1”是索引值,因为“子”有4 个,而索引值是唯一的,所以要编号,用“1,

30、 2,3,4”分开'* “红富士”等是要显示的文本,K1是显示图标的索引值,注意K1区分大小写。'*-End Sub就这么多代码, 总共十几行, 就可以在树控件中显示数据了,很简单吧。 第一小时结束。2 学习怎样将树控件和数据库中的数据绑起来在第一小时里, 我们学习了怎样直接用代码填充树控件,但在实际使用中,这种方法的应用性不大, 只有将树控件与数据库中的数据结合起来,才能有真正的应用。其实绑定数据库的方法和直接用代码填充是小异的,我们要做的只是将Add 的参数里,原来我们手工输入的变换一下,让程序知道去数据库中找数据。目的:将数据库中的数据与树控件绑定背景:我们想在树控件中显

31、示销售客户的层级列表, 这个销售客户的分层是这样的, 先按“大区”,再按“省份” ,最后到“客户”我们在数据库中建立了三个表,字段如下:大区表:大区 ID ,大区名称省份表:省份ID ,省份名称,所属大区客户表:客户ID ,客户名称,所属省份这三个表互相建立了关系1、新建一个窗体,在窗体上放置两个控件,一个是Treeview ,一个是Imagelist2、设置这两个控件的属性在这里和第一小时唯一的区别是我们在设置Imagelist 控件时,导入了两个图标,一个KEY 为 K1 ,一个为K2 ,原来树控件的Node 图标是可以变化的,我们准备某个项没有选中时的图标是一个没有打开的文件夹,选中时是

32、一个打开的文件夹,以区别。3、编写代码,如下:Private Sub Form_Load()'* -'* 用数据库表 (查询也一样 )中数据填充树控件'* -Dim Rec As New ADODB.RecordsetDim stRecQL As StringDim Item As IntegerDim i As IntegerDim nodindex As Node'* -'* 定义各类'* -'设置最顶级的"爷 "'* -爷 ", " 销售客户 ", "K1"

33、;, "K2")nodindex.Sorted = True'* -'* 这里的设置跟第一小时里基本是一样的'* 但最后多了一个"K2" 的参数 ,"K1" 代表的是未被选中时的图标,"K2" 代表是被选中后的图标'* 仔细观察一下,你会发现选中和没选中的图标是不一样的,一个是一个文件夹,一个是一个打开的文件夹'* -'设置第二级 "父 "'* -Rec.Open " 大 区 表 ", CurrentProject.Co

34、nnection, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1爷", tvwChild, " 父 " & Rec.Fields(" 大区 ID"), Rec.Fields(" 大区名称 "), "K1", "K2")nodindex.Sorted = TrueRec.MoveNextNextRec.Close'* -'* 第一行意思是打开一个表去

35、寻找数据'* 关键在与Add 参数的变化(查询也是可以的)'* 大家看第三个参数,在第一小时里,这里是 " 父 1", 这里用Rec.Fields(" 大区ID") 来代替"1", 意思是用表的编号来代替手工编号'* 第四个参数也是一样,直接用表中的名称字段来取代原来我们手工的命名'* -'设置第三级 "子 "'* -Rec.Open " 省 份 表 ", CurrentProject.Connection, adOpenKeyset, adLoc

36、kOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1父" & Rec.Fields(" 所属大区 "), tvwChild,"子 "& Rec.Fields(" 省份 ID"), Rec.Fields(" 省份名称 "), "K1", "K2") nodindex.Sorted = TrueRec.MoveNextNextRec.Close'* -'* 不用再解释了吧'* 要注意的是,定义第一个参数的时候, 不是用 " 父 " & Rec.Fields(" 大区Rec.Fields(" 所属大区 ")'* 这个意思是 :用省份表中关联大区表的字段,而不是直接用大区表的ID'* -'设置第四级 ""'* -Rec.Open"客户表",CurrentProject.Connection,adO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论