ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > Excel VBA > Treeview控件学习

Treeview控件学习

作者:绿色风 分类: 时间:2022-08-17 浏览:157
楼主
wise
最近把以前学习的Treeview控件的东西重新学习了一次,把相关的资料放上来。

  1. Private Sub UserForm_Initialize()
  2. '初始化ImageList控件,添加图片
  3.   Dim img As New ImageList
  4.   img.ListImages.Add 1, "book1", LoadPicture(ThisWorkbook.Path & "\book1.gif")
  5.   img.ListImages.Add 2, "book2", LoadPicture(ThisWorkbook.Path & "\book2.gif")
  6.   img.ListImages.Add 3, "book3", LoadPicture(ThisWorkbook.Path & "\book3.gif")
  7.   
  8.   Set TreeView1.ImageList = img
  9.   
  10.   '设置显示节点路径时的分隔符
  11.   TreeView1.PathSeparator = "\"
  12. End Sub

  1. Private Sub CommandButton1_Click()
  2.   Dim nodex As Node
  3.   TreeView1.Nodes.Clear
  4.   '添加节点
  5.   Set nodex = TreeView1.Nodes.Add(, , "研究院", "研究院", "book1")
  6.   Set nodex = TreeView1.Nodes.Add("研究院", tvwChild, "汇智", "汇智", "book2")
  7.   Set nodex = TreeView1.Nodes.Add("研究院", tvwChild, "众智", "众智", "book2")
  8.   Set nodex = TreeView1.Nodes.Add("研究院", tvwChild, "星汇", "星汇", "book2")
  9.   Set nodex = TreeView1.Nodes.Add("研究院", tvwChild, "亿迅", "亿迅", "book2")
  10.   Set nodex = TreeView1.Nodes.Add("研究院", tvwChild, "普信", "普信", "book2")
  11. End Sub
  1. Private Sub CommandButton2_Click()
  2. '设置复选框显示
  3. TreeView1.CheckBoxes = True
  4. End Sub
  1. Private Sub CommandButton3_Click()
  2. '清除节点
  3. TreeView1.Nodes.Clear
  4. End Sub
  1. Private Sub CommandButton4_Click()
  2. '去除复选框
  3. TreeView1.CheckBoxes = False
  4. End Sub
  1. Private Sub CommandButton5_Click()
  2. '开启热跟踪功能
  3. TreeView1.HotTracking = True
  4. End Sub
  1. Private Sub CommandButton6_Click()
  2. '编辑节点
  3. TreeView1.StartLabelEdit
  4. End Sub
  1. Private Sub CommandButton7_Click()
  2. '显示根节点连线
  3. TreeView1.LineStyle = tvwRootLines
  4. End Sub
  1. Private Sub CommandButton8_Click()
  2. '隐藏根节点连线
  3. TreeView1.LineStyle = tvwTreeLines
  4. End Sub
  1. Private Sub CommandButton9_Click()
  2. '若所选为根节点,将其子节点连线一起去除
  3. TreeView1.Nodes.Remove TreeView1.SelectedItem.Index
  4. End Sub
  1. Private Sub CommandButton10_Click()
  2. '统计节点个数
  3. Label1.Caption = "TreeView控件中节点对象的个数为:" & TreeView1.Nodes.Count & "个"
  4. End Sub
  1. Private Sub CommandButton11_Click()
  2. '所选节点显示为粗体
  3. TreeView1.SelectedItem.Bold = True
  4. End Sub
  1. Private Sub CommandButton12_Click()
  2. '展开所有节点
  3. Dim i As Long
  4. For i = 1 To TreeView1.Nodes.Count
  5.    TreeView1.Nodes(i).Expanded = True
  6. Next i
  7. End Sub
  1. Private Sub CommandButton13_Click()
  2. '折叠所有节点
  3. Dim i As Long
  4. For i = 1 To TreeView1.Nodes.Count
  5.    TreeView1.Nodes(i).Expanded = False
  6. Next i
  7. End Sub
  1. Private Sub OptionButton1_Click()
  2. '节点仅为文本
  3. TreeView1.Style = tvwTextOnly
  4. End Sub
  1. Private Sub OptionButton2_Click()
  2. '节点仅为图像
  3. TreeView1.Style = tvwPictureText
  4. End Sub
  1. Private Sub OptionButton3_Click()
  2. '节点为符号文本
  3. TreeView1.Style = tvwPlusMinusText
  4. End Sub
  1. Private Sub OptionButton4_Click()
  2. '为直线文本
  3. TreeView1.Style = tvwTreelinesText
  4. End Sub
  1. Private Sub OptionButton5_Click()
  2. '节点显示恢复正常
  3. TreeView1.Style = tvwTreelinesPlusMinusText
  4. End Sub
  1. Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
  2.   '返回对象路径
  3.   Label2.Caption = Node.FullPath
  4. End Sub

TreeView控件示例.rar
2楼
wise
下面这些解释是范版的东西:
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对象被单击时发生。
  [语法] Private Sub object_NodeClick(ByVal node As Node)
  Object代表一个对象表达式,参数node是对被点取的Node对象的引用。
  说明:在单击节点对象之外的TreeView控件的任何部位,标准的Click事件发生。当单击某个特定的Node对象时,NodeClick事件发生;NodeClick事件也返回对特定的Node对象的引用,在下一步操作之前,该引用可用来使这个Node对象可用。NodeClick事件发生在标准的Click事件之前。
3楼
icenotcool


4楼
rongjun
学习了!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap