TREEVIEW控件.docx

上传人:b****6 文档编号:8245830 上传时间:2023-01-30 格式:DOCX 页数:17 大小:24.51KB
下载 相关 举报
TREEVIEW控件.docx_第1页
第1页 / 共17页
TREEVIEW控件.docx_第2页
第2页 / 共17页
TREEVIEW控件.docx_第3页
第3页 / 共17页
TREEVIEW控件.docx_第4页
第4页 / 共17页
TREEVIEW控件.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

TREEVIEW控件.docx

《TREEVIEW控件.docx》由会员分享,可在线阅读,更多相关《TREEVIEW控件.docx(17页珍藏版)》请在冰豆网上搜索。

TREEVIEW控件.docx

TREEVIEW控件

掌握TREEVIEW控件

TREEVIEW控件在正常ACCESS数据库使用中是很频繁的,下面这篇文章与大家分享一下:

一、详见如下:

能不能掌握控件的使用,是业余向准专业进步的关键。

比如TREEVIEW控件,TREEVIEW控件,也叫树控件,主要用于层级显示和控制,应用广泛。

我一直很想学习这个控件的使用,但每次都没有学成,总感觉很难。

前几天有空,狠下心来将论坛搜索一遍,发现也不是太难,在很短时间内只要方法得当,很快可以掌握,因为我是菜鸟,所以用菜鸟的方法和大家交流,可能大家学得更快一点,只要你用心,三个小时一定可以掌握。

请大家一定要自己动手做,只有做才能理解,光看帮助和说明是没有用的。

热身:

理解层级概念,层级理论上可以有无限级,一般用到四,五级也够用了。

最上级的只能有一个,我们把它叫做“爷”,接下来是“父”,再是“子”,再是“孙”,接下来是“曾孙”......,汇总如下:

“爷,父,子,孙,曾孙”,这里是5级关系,除了“爷”只能有一个外,其余可以有无限个。

记住这些,下面要用。

第一小时:

学习直接用代码将数据填充到树控件中。

为什么要先学习直接用代码将数据填充到树控件中?

因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。

目的:

我们要在树控件中建立如下的一个3层级关系

水果

|

|__苹果

||__红富士

||__国光

|

|__葡萄

|__红提子

|__青提子

解释:

水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。

在这里:

“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。

概括如下:

爷(只能有一个):

水果

父(这里有2个):

父1:

苹果;父2:

葡萄

子(这里有4个):

子1:

红富士(父1苹果的子);子2:

国光(父1苹果的子);子3:

红提子(父2葡萄的子);子4:

青提子(父2葡萄的子)

下面我们在ACCESS中栽下这棵树,步骤如下:

1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist

如何找到这两个控件?

Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“MicrosoftTreeviewControl,Version6.0";Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“MicrosoftImagelistControl,Version6.0"。

Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?

原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。

2、设置这两个控件的属性

首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。

一种是设置这个控件本身的属性。

要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。

跟我们平时设置文本框什么的一样。

要设置这个控件本身的属性,只要双击这个控件就可以了。

1)设置Treeview控件在ACCESS中的名称属性,将名称设置为“Treeview"

2)设置Imagelist控件在ACCESS中的名称属性,将名称设置为“Image"

2)设置Imagelist控件本身的属性,双击控件后,在弹出来的设置框中选“Images",单击“InsertPicture"按钮,在你电脑中选择你需要的图标。

在“Key:

”栏中填入“K1”。

其他默认设置不用改。

3)设置Treeview控件本身的属性,双击控件后,在弹出来的设置框中选“General”,在这个选项面版中有很多项设置,大多数是设置树控件的显示格式,你自己慢慢研究。

这里我们将第一项“Style"选7,在第五项“Imagelist"选项中将我们放置的Imagelist控件“Image"选上。

这项设置就将图标和树控件联系了起来。

3、写代码将数据填充到树控件中

代码写在哪里?

我们希望窗体一打开,数据就自动填充在树控件中,所以这个代码就写在窗体的加载事件中,代码及解释如下:

PrivateSubForm_Load()

'*-----------------------------------------------------------------

'*用代码将数据填充到树控件中

'*-----------------------------------------------------------------

DimNodeindexAsNode

'*------------------------------------------------------------------

'*解释:

定义Node

'*Node是树控件的对象

'*每个Node都有三个东西,图标,文本,索引值

'*图标和文本都是实际显示出来的,索引值是隐含的

'*------------------------------------------------------------------

'设置最顶级的“爷”:

'*---------------------------

SetNodeindex=TreeView.Nodes.Add(,,"爷","水果","K1")

Nodeindex.Sorted=True

'*------------------------------------------------------------------

'*树控件填充数据的方法是Nodes.Add

'*括号内是Add方法的参数

'*在这里“爷”是索引值,“水果”是将显示的文本,“K1”是图标的索引值

'*Sorted是指Node的排序,True就是指采用排序,默认是按拼音

'*第一,二个参数是空的

'*具体的参数设置以后你可以慢慢详细研究

'*------------------------------------------------------------------

'设置第二级“父”

'*---------------------------

SetNodeindex=TreeView.Nodes.Add("爷",tvwChild,"父1","苹果","K1")

Nodeindex.Sorted=True

SetNodeindex=TreeView.Nodes.Add("爷",tvwChild,"父2","葡萄","K1")

Nodeindex.Sorted=True

'*------------------------------------------------------------------

'*第一个参数“爷”是指这一层对应上层“爷”的

'*tvwChild参数是规定格式,指相对来说,这一层是爷的子层

'*“父1”是索引值,因为“父”有2个,而索引值是唯一的,所以要编号,用“父1”“父2”分开

'*“苹果”“葡萄”是要显示的文本,K1是显示图标的索引值

'*现在知道为什么在“爷”层设置时,第一,第二个参数是空的,因为这是最顶层

'*------------------------------------------------------------------

'设置第三级“子”

'*---------------------------

SetNodeindex=TreeView.Nodes.Add("父1",tvwChild,"子1","红富士","K1")

Nodeindex.Sorted=True

SetNodeindex=TreeView.Nodes.Add("父1",tvwChild,"子2","国光","K1")

Nodeindex.Sorted=True

SetNodeindex=TreeView.Nodes.Add("父2",tvwChild,"子3","红提子","K1")

Nodeindex.Sorted=True

SetNodeindex=TreeView.Nodes.Add("父2",tvwChild,"子4","青提子","K1")

Nodeindex.Sorted=True

'*------------------------------------------------------------------

'*第一个参数“父1,2”是指这一层对应上层“父”的,但要注意对应的是“父1”还是“父2”

'*tvwChild参数是规定格式,指相对来说,这一层是父的子层

'*“子1”是索引值,因为“子”有4个,而索引值是唯一的,所以要编号,用“1,2,3,4”分开

'*“红富士”等是要显示的文本,K1是显示图标的索引值,注意K1区分大小写。

'*------------------------------------------------------------------

EndSub

就这么多代码,总共十几行,就可以在树控件中显示数据了,很简单吧。

第一小时结束。

第二小时:

学习怎样将树控件和数据库中的数据绑起来

在第一小时里,我们学习了怎样直接用代码填充树控件,但在实际使用中,这种方法的应用性不大,只有将树控件与数据库中的数据结合起来,才能有真正的应用。

其实绑定数据库的方法和直接用代码填充是大同小异的,我们要做的只是将Add的参数里,原来我们手工输入的变换一下,让程序知道去数据库中找数据。

目的:

将数据库中的数据与树控件绑定

背景:

我们想在树控件中显示销售客户的层级列表,这个销售客户的分层是这样的,先按“大区”,再按“省份”,最后到“客户”我们在数据库中建立了三个表,字段如下:

大区表:

大区ID,大区名称

省份表:

省份ID,省份名称,所属大区

客户表:

客户ID,客户名称,所属省份

这三个表互相建立了关系

1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist

2、设置这两个控件的属性在这里和第一小时唯一的区别是我们在设置Imagelist控件时,导入了两个图标,一个KEY为K1,一个为K2,原来树控件的Node图标是可以变化的,我们准备某个项没有选中时的图标是一个没有打开的文件夹,选中时是一个打开的文件夹,以区别。

3、编写代码,如下:

PrivateSubForm_Load()

'*-----------------------------------------------------------------

'*用数据库表(查询也一样)中数据填充树控件

'*-----------------------------------------------------------------

DimRecAsNewADODB.Recordset

DimstRecQLAsString

DimItemAsInteger

DimiAsInteger

DimnodindexAsNode

'*-----------------------------------------------------------------

'*定义各类

'*-----------------------------------------------------------------

'设置最顶级的"爷"

'*---------------------------

Setnodindex=TreeView.Nodes.Add(,,"爷","销售客户","K1","K2")

nodindex.Sorted=True

'*-----------------------------------------------------------------

'*这里的设置跟第一小时里基本是一样的

'*但最后多了一个"K2"的参数,"K1"代表的是未被选中时的图标,"K2"代表是被选中后的图标

'*仔细观察一下,你会发现选中和没选中的图标是不一样的,一个是一个文件夹,一个是一个打开的文件夹

'*-----------------------------------------------------------------

'设置第二级"父"

'*---------------------------

Rec.Open"大区表",CurrentProject.Connection,adOpenKeyset,adLockOptimistic,adCmdTableDirect

Fori=0ToRec.RecordCount-1

Setnodindex=TreeView.Nodes.Add("爷",tvwChild,"父"&Rec.Fields("大区ID"),Rec.Fields("大区名称"),"K1","K2")

nodindex.Sorted=True

Rec.MoveNext

Next

Rec.Close

'*-----------------------------------------------------------------

'*第一行意思是打开一个表去寻找数据(查询也是可以的)

'*关键在与Add参数的变化

'*大家看第三个参数,在第一小时里,这里是"父1",这里用Rec.Fields("大区ID")来代替"1",意思是用表的编号来代替手工编号

'*第四个参数也是一样,直接用表中的名称字段来取代原来我们手工的命名

'*-----------------------------------------------------------------

'设置第三级"子"

'*---------------------------

Rec.Open"省份表",CurrentProject.Connection,adOpenKeyset,adLockOptimistic,adCmdTableDirect

Fori=0ToRec.RecordCount-1

Setnodindex=TreeView.Nodes.Add("父"&Rec.Fields("所属大区"),tvwChild,"子"&Rec.Fields("省份ID"),Rec.Fields("省份名称"),"K1","K2")

nodindex.Sorted=True

Rec.MoveNext

Next

Rec.Close

'*-----------------------------------------------------------------

'*不用再解释了吧

'*要注意的是,定义第一个参数的时候,不是用"父"&Rec.Fields("大区ID"),而是用"父"&Rec.Fields("所属大区")

'*这个意思是:

用省份表中关联大区表的字段,而不是直接用大区表的ID

'*-----------------------------------------------------------------

'设置第四级"孙"

'*---------------------------

Rec.Open"客户表",CurrentProject.Connection,adOpenKeyset,adLockOptimistic,adCmdTableDirect

Fori=0ToRec.RecordCount-1

Setnodindex=TreeView.Nodes.Add("子"&Rec.Fields("所属省份"),tvwChild,"孙"&Rec.Fields("客户ID"),Rec.Fields("客户名称"),"K1","K2")

nodindex.Sorted=True

Rec.MoveNext

Next

Rec.Close

'*-----------------------------------------------------------------

'*到此你应该完全明白了

'*-----------------------------------------------------------------

EndSub

第二小时结束

第三小时:

将树控件与窗体结合

我们做树控件,当然不可能单单为了显示层级数据,我们希望跟窗体结合,当我们单击树控件中的某个客户时,窗体上能相应的转到这个客户的资料。

目的:

将树控件与窗体结合

1、我们还是沿用第二个小时里的例子,但在建立窗体时,将窗体的数据来源设为“客户表”,并在窗体中放置好客户表的字段。

2、写入如下代码:

PrivateSubTreeview_NodeClick(ByValNodeAsObject)

'*-----------------------------------------------------------------

'*树控件的鼠标点击事件为NodeClick

'*-----------------------------------------------------------------

DimstrAsString

'*-----------------------------------------------------------------

'*定义一个筛选

'*-----------------------------------------------------------------

IfNode.Text="销售客户"OrNode.KeyLike"父*"OrNode.KeyLike"子*"Then

str=""

'*-----------------------------------------------------------------

'*在第一小时里,我们说了Node有三个东西,图标,文本,索引值

'*文本就是text,索引值就是Key

'这里将就是说当我们点击"爷","父"或"子"层的时候,不筛选窗体

'*这个条件也可写成:

IfNode.key="爷"OrNode.KeyLike"父*"OrNode.KeyLike"子*"Then

'*-----------------------------------------------------------------

Else

str="[客户名称]='"&Node.Text&"'"

EndIf

Me.Form.FilterOn=True

Me.Form.Filter=str

'*按指定的条件进行窗体筛选

EndSub

明白了吧,所谓结合窗体,实际不过是进行窗体筛选而已。

第三小时结束(5分钟也够了,哈哈)

TreeView概述

TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。

TreeView一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。

创建了TreeView控件之后,可以通过设置属性与调用方法对各Node对象进行操作,这些操作包括添加、删除、对齐和其它操作。

可以编程展开与折回Node对象来显示或隐藏所有子节点。

Collapse、Expand和NodeClick三个事件也提供编程功能。

Node对象使用Root、Parent、Child、FirstSibling、Next、Previous和LastSibling属性。

在代码中可通过检索对Node对象的引用,从而在树上定位。

也可以使用键盘定位。

UPARROW键和DOWNARROW键向下循环穿过所有展开的Node对象。

从左到右、从上到下地选择Node对象。

若在树的底部,选择便跳回树的顶部,必要时滚动窗口。

RIGHTARROW键和LEFTARROW键也穿过所有展开的Node对象,但是如果选择了未展开的Node之后再按RIGHTARROW键,该Node便展开;第二次按该键,选择将移向下一个Node。

相反,若扩展的Node有焦点,这时再按LEFTARROW键,该Node便折回。

如果按下ANSI字符集中的键,焦点将跳转至以那个字母开头的最近的Node。

后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。

  控件的外观有八种可用的替换样式,它们是文本、位图、直线和+/-号的组合,Node对象可以任一种组合出现。

 TreeView控件使用由ImageList属性指定的ImageList控件,来存储显示于Node对象的位图和图标。

任何时刻,TreeView控件只能使用一个ImageList。

这意味着,当TreeView控件的Style属性被设置成显示图象的样式时,TreeView控件中每一项的旁边都有一个同样大小的图象。

  发行注意TreeView控件是COMCTL32.OCX文件中的一组ActiveX控件的一部分。

为了在应用程序中使用TreeView控件,必须将COMCTL32.OCX文件添加到工程中。

在发行应用程序时,要在用户的MicrosoftWindowsSystem或System32目录中安装COMCTL32.OCX文件。

属性

  DropHighlight属性(ListView,TreeView控件),

  Indentation属性,

  LabelEdit属性,

  LineStyle属性,

  Nodes属性,

  PathSeparator属性(TreeView控件),

  SelectedItem属性(ActiveX控件),

  Sorted属性(TreeView控件),

  Style属性(TreeView控件),

  Checkboxes属性,

  FullRowSelect属性,

  Scroll属性,

  SingleSel属性,

  HotTracking属性,

  TabIndex属性,

  Tag属性,

  Visible属性,

  DragIcon属性,

  DragMode属性,

  CausesValidation属性,

  MouseIcon属性,

  TabStop属性,

  HelpContextID属性,

  Name属性,

  Parent属性,

  Container属性,

  ToolTipText属性,

  WhatsThisHelpID属性,

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1