树控件TreeView.docx

上传人:b****7 文档编号:23401638 上传时间:2023-05-16 格式:DOCX 页数:44 大小:681.57KB
下载 相关 举报
树控件TreeView.docx_第1页
第1页 / 共44页
树控件TreeView.docx_第2页
第2页 / 共44页
树控件TreeView.docx_第3页
第3页 / 共44页
树控件TreeView.docx_第4页
第4页 / 共44页
树控件TreeView.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

树控件TreeView.docx

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

树控件TreeView.docx

树控件TreeView

树控件TreeView---实例

1添加TreeView控件

在“控件工具箱”中单击鼠标右键,从弹出的快捷菜单中选择“附加控件”(如图1所示),出现“附加控件”对话框。

在该对话框中,找到“MicrosoftTreeViewControl,version6.0”并选中前面的复选框,如图2所示,单击“确定”按钮。

图1:

在工具箱中单击右键,选择“附加控件”。

图2:

在“附加控件”对话框选中“TreeView控件”。

注:

下面的示例中可能要用到ImageList控件和ImageCombo控件,因此,将这两个控件也添加到“控件工具箱”中。

最后的控件工具箱如图3所示。

图3:

添加控件后的工具箱。

2TreeView控件概述

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

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

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

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

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

2.1常用属性

(1)Nodes属性返回对TreeView控件的Node对象的集合的引用。

  [语法]object.Nodes

 object代表一个对象表达式。

可以使用标准的集合方法(例如:

Add和Remove方法)操作Node对象,可以按其索引或存储在Key属性中的唯一键来访问集合中的每个元素。

(2)Style属性返回或设置图形类型(图象、文本、+/-号、直线)以及出现在TreeView控件中每一Node对象上的文本的类型。

  [语法]object.Style[=number]

Object代表一个对象表达式,number指定图形类型的整数,number的设置值是:

0仅为文本;1为图象和文本,2为+/-号和文本;3为+/-号、图象和文本;4为直线和文本;5为直线、图象和文本;6为直线、+/-号和文本;7(缺省)为直线、+/-号、图象和文本。

若Style属性设置为包含直线的值,则LineStyle属性就确定了直线的外观;如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。

(3)Sorted属性返回或设置值,此值确定Node对象的根节点或子节点是否按字母顺序排列。

  [语法]object.Sorted[=boolean]

  Object代表一个对象表达式。

boolean的设置值是:

True——Node对象根据它们的Text属性按字母顺序排列。

其Text属性由数字开始的Node对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。

False——Node对象不排序。

Sorted属性有两种用法,第一,在TreeView控件的根(顶)层排列Node对象;第二,对任何单个Node对象的子节点排序。

设置Sorted属性为True仅对当前Nodes集合排序。

在TreeView控件中添加新的Node对象时,必须再次设置Sorted属性为True,以便对添加的Node对象排列。

(4)appearance属性:

设置控件是否以3D效果显示。

(5)checkboxes属性:

决定在节点的每一项的旁边是否显示一个复选框,类似checkbox控件的作用。

(6)hottracking属性:

当鼠标指针经过某个条目时,这些条目是否突出显示,类似网页的超链接效果。

(7)labeledit属性:

决定用户是否能编辑控件中列出的项目,此项如果不想被改变,可将属性值设置为1

(8)linestyle属性:

设置列出的每项之间的行样式,即,如果为1,则当前项下还有子项的时候,它的前面会显示“+”号,如果值为2,则不显示“+”

(9)singlesel属性:

设置在树中选择新的条目时,是否展开此条目并收拢前一个条目,即设置为True时,并且当前选中的条目有子项的时候,会把子项展开,并将原来选中的条目收拢。

(10)style属性:

设置Treeview控件的每个列表的组成方式,比如“图片”+“文本”方式,等等,这样可以把Treeview设置得更美观一些。

2.2常用方法

(1)Add方法

在Treeview控件的Nodes集合中添加一个Node对象。

  [语法]object.Add(relative,relationship,key,text,image,selectedimage)

  [说明]

参数Object是必需的,为对象表达式。

参数Relative是可选的,代表已存在的Node对象的索引号或键值。

参数relationship是可选的,代表新节点与已存在的节点间的关系,指定的Node对象的相对位置。

relationship的设置值是:

0——tvwFirst首节点,该Node和在relative中被命名的节点位于同一层,并位于所有同层节点之前。

1——tvwLast最后的节点,该Node和在relative中被命名的节点位于同一层,并位于所有同层节点之后。

任何连续地添加的节点可能位于最后添加的节点之后。

2——tvwNext(缺省),下一个节点,该Node位于在relative中被命名的节点之后。

3——tvwPrevious,前一个节点,该Node位于在relative中被命名的节点之前。

4——tvwChild(缺省),子节点。

该Node为在relative中被命名的节点的子节点。

参数key是可选的,唯一的字符串,可用于用Item方法检索Node。

参数text是必需的,在Node中出现的字符串。

参数image是可选的,代表一个图像或在ImageList控件中图象的索引。

参数selectedimage是可选的,代表一个图像或在ImageList控件中图象的索引,在Node被选中时显示。

  注意:

如果在relative中没有被命名的Node对象,则新节点被放在节点顶层的最后位置。

(2)GetVisibleCount方法

返回固定在TreeView控件的内部区域的Node对象的个数。

  [语法]object.GetVisibleCount

  object代表一个对象表达式,Node对象的个数取决于在一个窗口中能固定多少行。

总的行数取决于控件的高度和Font对象的Size属性。

可以使用GetVisibleCount属性确保可视的最小行数,这样可以精确地访问一个层。

如果最小行数是不可视的,可以用Height属性重新设置TreeView的大小。

2.3常用事件

NodeClick事件在一个Node对象被单击时发生。

  [语法]PrivateSubobject_NodeClick(ByValnodeAsNode)

  Object代表一个对象表达式,参数node是对被点取的Node对象的引用。

  说明:

在单击节点对象之外的TreeView控件的任何部位,标准的Click事件发生。

当单击某个特定的Node对象时,NodeClick事件发生;NodeClick事件也返回对特定的Node对象的引用,在下一步操作之前,该引用可用来使这个Node对象可用。

NodeClick事件发生在标准的Click事件之前。

3TreeView控件的使用

下面通过示例来介绍TreeView控件的常用方法、属性和事件。

[示例一]TreeView控件常用方法、属性和事件示例

(1)

在VBE编辑器中插入一个用户窗体,并在该窗体上添加一些控件,即一个TreeView控件、一个ImageList控件、一些命令按钮控件、一些选项按钮控件和一些标签控件,如图4所示。

图4:

用户窗体界面

在用户窗体代码窗口,输入下面的代码:

PrivateSubUserForm_Initialize()

'初始化ImageList控件,添加图片

DimimgAsNewImageList

img.ListImages.Add1,"book1",LoadPicture(ThisWorkbook.Path&"\book1.jpg")

img.ListImages.Add2,"book2",LoadPicture(ThisWorkbook.Path&"\book2.jpg")

img.ListImages.Add3,"book3",LoadPicture(ThisWorkbook.Path&"\book3.jpg")

SetTreeView1.ImageList=img

'设置显示节点路径时的分隔符

TreeView1.PathSeparator="\"

EndSub

PrivateSubCommandButton1_Click()

'添加节点

DimNodeXAsNode

TreeView1.Nodes.Clear

SetNodeX=TreeView1.Nodes.Add(,,"课程科目","课程科目","book3")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"语文","语文","book1")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"数学","数学","book1")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"外语","外语","book1")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"政治","政治","book1")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"物理","物理","book1")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"化学","化学","book1")

SetNodeX=TreeView1.Nodes.Add("课程科目",tvwChild,"生物","生物","book1")

EndSub

PrivateSubCommandButton2_Click()

'设置为复选框显示

TreeView1.CheckBoxes=True

EndSub

PrivateSubCommandButton3_Click()

'清除节点

TreeView1.Nodes.Clear

EndSub

PrivateSubCommandButton4_Click()

'去掉复选框显示

TreeView1.CheckBoxes=False

EndSub

PrivateSubCommandButton5_Click()

'开启热跟踪功能

TreeView1.HotTracking=True

EndSub

PrivateSubCommandButton6_Click()

'编辑节点

TreeView1.StartLabelEdit

EndSub

PrivateSubCommandButton7_Click()

'显示根节点连线

TreeView1.LineStyle=tvwRootLines

EndSub

PrivateSubCommandButton8_Click()

'隐藏根节点连线

TreeView1.LineStyle=tvwTreeLines

EndSub

PrivateSubCommandButton9_Click()

'移除所选节点

'若为根节点,则将其子节点一并移除

TreeView1.Nodes.RemoveTreeView1.SelectedItem.Index

EndSub

PrivateSubCommandButton10_Click()

'统计节点个数

Label1.Caption="TreeView控件中节点对象的个数为:

"&TreeView1.Nodes.Count&"个."

EndSub

PrivateSubCommandButton11_Click()

'将所选节点变为粗体

TreeView1.SelectedItem.Bold=True

EndSub

PrivateSubCommandButton12_Click()

DimiAsLong

Fori=1ToTreeView1.Nodes.Count

TreeView1.Nodes(i).Expanded=True'展开所有节点

Nexti

EndSub

PrivateSubCommandButton13_Click()

DimiAsLong

Fori=1ToTreeView1.Nodes.Count

TreeView1.Nodes(i).Expanded=False'折叠所有节点

Nexti

EndSub

PrivateSubOptionButton1_Click()

'节点仅为文本

TreeView1.Style=tvwTextOnly

EndSub

PrivateSubOptionButton2_Click()

'节点为图像文本

TreeView1.Style=tvwPictureText

EndSub

PrivateSubOptionButton3_Click()

'节点为符号文本

TreeView1.Style=tvwPlusMinusText

EndSub

PrivateSubOptionButton4_Click()

'节点为直线文本

TreeView1.Style=tvwTreelinesText

EndSub

PrivateSubOptionButton5_Click()

'节点显示恢复正常

TreeView1.Style=tvwTreelinesPlusMinusPictureText

EndSub

PrivateSubTreeview1_Nodeclick(ByValNodeAsMSComctlLib.Node)

'返回对象路径

Label3.Caption=Node.FullPath

EndSub

PrivateSubTreeview1_NodeCheck(ByValNodeAsMSComctlLib.Node)

'复选框事件

Label5.Caption="当前选择的节点是:

"&TreeView1.SelectedItem.Text

EndSub

下面是该用户窗体的一些运行结果截图。

图5:

添加节点并展开节点。

图6:

为节点加上复选框。

图7:

选中复选框后,下面显示相应的信息。

图8:

选中某节点后显示相应的节点位置信息。

图9:

编辑某节点

图10:

显示根节点连线

图11:

将节点变为粗体

图12:

选择节点仅为文本后(其它选项按钮的效果用户可以自已体验)

[示例二]TreeView控件常用方法、属性和事件示例

(2)

在VBE编辑器中插入一个用户窗体,并在该窗体上添加一个TreeView控件、一个ImageList控件、两个标签控件、二个文字框、六个命令按钮,如下图13所示。

图13:

设计界面

在该窗体的代码窗口中,输入下面的代码:

OptionExplicit

'定义变量

DimiAsInteger

DimjAsInteger

DimnodxAsNode

DimbAsBoolean

PrivateSubUserForm_Initialize()

DimimgAsNewImageList

img.ListImages.Add1,"book1",LoadPicture(ThisWorkbook.Path&"\book1.jpg")

img.ListImages.Add2,"book2",LoadPicture(ThisWorkbook.Path&"\book2.jpg")

img.ListImages.Add3,"book3",LoadPicture(ThisWorkbook.Path&"\book3.jpg")

SetTreeView1.ImageList=img'链接图像列

TreeView1.LineStyle=tvwTreeLines'在兄弟节点和根节点之间显示线

'树状外观包含全部元素

TreeView1.Style=tvwTreelinesPlusMinusPictureText

'建立名称为"VBA控件"的父节点,选择索引为1的图像

Setnodx=TreeView1.Nodes.Add(,,"VBA控件","VBA控件",1)

'在"VBA控件"根节点下建立"第一章"子节点,选择索引为3的图像

Setnodx=TreeView1.Nodes.Add("VBA控件",tvwChild,"child01","第一章",3)

'在"VBA控件"根节点下建立"第二章"子节点,选择索引为3的图像

Setnodx=TreeView1.Nodes.Add("VBA控件",tvwChild,"child02","第二章",3)

b=False

EndSub

PrivateSubCommandButton1_Click()

IfTextBox1.Text<>""AndTextBox2.Text<>""Then

'不允许建立零字节的根节点和子节点

b=False

j=TreeView1.Nodes.Count

Fori=1ToTreeView1.Nodes.Count'检查新输入的根节点名称是否存在

IfTreeView1.SelectedItem.Children>0Then

IfTextBox1.Text=TreeView1.Nodes(i).TextThenb=True

EndIf

Nexti

Ifb=TrueThen'若存在,则在根节点下建立子节点

Setnodx=TreeView1.Nodes.Add(TextBox1.Text,tvwChild,"child"&j,TextBox2.Text,3)

Else'若不存在,则建立根节点和子节点

Setnodx=TreeView1.Nodes.Add(,,TextBox1.Text,TextBox1.Text,1)

Setnodx=TreeView1.Nodes.Add(TextBox1.Text,tvwChild,"child"&j,TextBox2.Text,3)

EndIf

TreeView1.Refresh

ElseIfTextBox1.Text=""ThenMsgBox"请输入根节点名称!

",vbInformation,"警告!

"

'系统提示

ElseIfTextBox2.Text=""ThenMsgBox"请输入子节点名称!

",vbInformation,"警告!

"

EndIf

EndSub

PrivateSubCommandButton2_Click()

Fori=1ToTreeView1.Nodes.Count

TreeView1.Nodes(i).Expanded=True'展开所有节点

Nexti

EndSub

PrivateSubCommandButton3_Click()

Fori=1ToTreeView1.Nodes.Count

TreeView1.Nodes(i).Expanded=False'折叠所有节点

Nexti

EndSub

PrivateSubCommandButton4_Click()

TreeView1.Sorted=True'排列顺序

EndSub

PrivateSubCommandButton5_Click()

IfTreeView1.SelectedItem.Index<>1Then

TreeView1.Nodes.RemoveTreeView1.SelectedItem.Index'删除选定的节点

EndIf

EndSub

PrivateSubCommandButton6_Click()

End'退出程序

EndSub

PrivateSubTreeView1_Expand(ByValNodeAsMSComctlLib.Node)

Node.ExpandedImage=2'节点被展开时,选择索引为2的图像

EndSub

PrivateSubTreeView1_NodeClick(ByValNodeAsMSComctlLib.Node)

DimstrAsString

IfTreeView1.SelectedItem.Children=0Then'检查是否有子节点,0为无

Fori=1ToTreeView1.Nodes.Count

IfTreeView1.Nodes(i).SelectedThen

str=TreeView1.Nodes(i).FullPath

'系统提示

MsgBox"您选择的是:

["&str&"]子节点!

"

EndIf

Nexti

EndIf

EndSub

运行后,初始化用户窗体,见UserForm_Initialize()事件代码。

首先在ImageList控件中添加三个图片,索引值分别为1、2、3;然后语句SetTreeView1.ImageList=img将图片链接到TreeView控件中。

下面的两条语句使用LineStyle属性和Style属性来设置TreeView控件外观,再使用Nodes对象的Add方法来添加节点,其语法为:

Nodes.Add([relative][,relationship][,key][,text][,image][,selectedimage])

其中,参数relationship是通过关系节点参数与新节点连接的另一个节点;参数可能是以下情况:

1-tvwlast该节点置于所有其他的在relative中被命名的同一级别的节点的后面

2-tvwNext该节点置于在relative中被命名节点的后面

3-

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

当前位置:首页 > 法律文书 > 起诉状

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

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