分享

经典代码解析3:制作树状目录

 L罗乐 2017-06-12

 

下面是一张我的U盘文件夹组织结构的图片。

使用计算机查找文件时,大家几乎都会习惯性地一级级打开计算机文件夹目录,然后找到某文件夹下的文件。在上图中,若我们单击左侧某文件夹扩展显示子文件夹,直至某文件夹下的文件,同时右侧会显示文件夹下的子文件夹和文件;若我们单击右侧的文件夹,左侧的树状目录也会相应扩展显示子文件夹。

 

很熟悉的树状目录!无处不在的树状目录!

下面我们就来讲解使用VBA制作类似上述树状目录的代码。

 

代码功能

根据工作表中的数据,自动生成树状目录。

 

程序代码

 

代码解析

下面,我们详细讲解上述代码。

  • 代码.Nodes.Add在Nodes集合中添加一个Node对象并将其赋值给变量setNode

  • 参数key指定节点的唯一的键值。

  • 参数text 指定节点显示的文本。

  • 参数LineStyle设置在节点前放置 /-号。

  • 参数Expanded设置节点是否扩展,代码中设置为False表示收缩节点。

  • 示例工作表如下图:

下面的代码:

生成的树状根目录如下图所示:

  • 代码.Nodes.Add(wks.Range('B' & i).Text, tvwChild)添加子节点,其键值为列B中的文本,且由该键值的文本命名的节点的子节点。后面的代码与添加根节点一样,指定添加的节点的键值、文本和形式。

  • 对上图所示的工作表,完整的代码运行后的结果如下图所示:

 

  • 为了进一步加深对代码的理解,我们将在上面的工作表中添加数据,再看看运行后的效果。如下图所示的工作表,我们在列B和列C中添加了节点数据。

运行后的效果如下图所示:

通过上面代码运行效果对比,可以看出,在列A中放置根节点数据,列C中放置的是根节点下各级子节点的数据,而列B用于确定相应的列C中的子节点放置在哪个根节点下或者哪个子节点下。

因此,您只需要在列A、列B、列C中按照这样的规律放置数据,就可以使用trewViewPopulate过程代码制作出想要的树状目录图。

当然,TreeView控件提供了许多外观设置,可以设置各种型式的外观来美化显示效果。

 

代码使用情形

使用TreeView控件制作分类清晰的树状层次目录,然后结合其他控件,可以方便地:

  • 组织并查看相应的数据

  • 查找并获取数据

 

应用示例

在用户窗体的控件工具箱中,默认没有显示TreeView控件,因此应先添加该控件,步骤如下图所示:

 

示例1:显示节点信息

当单击树状目录节点时,会显示该节点相关的信息。

仍以上面讲解中所示用的“节点数据”工作表为制作树状目录的工作表,下图为相应节点的示例信息工作表:

如下图所示,单击左侧某节点时,关于该节点的信息会显示在右侧的两个文本框中。

首先,按上图所示创建一个左侧为TreeView控件,右侧为两个TextBox控件的用户窗体。

然后,除输入本文开头制作树状目录的通用代码外,再输入下面的代码:

 

示例2:查找定额条目并自动输入到工作表

下面是一个较大型的程序,用来编制工程预算。由于代码较多,我们只讲解一下结果,在后续的案例分析文章中我们还会详细讲解这个程序。

 

如下图所示的用户窗体中,在右侧顶部可以选取要查找的定额。

选取后,在界面右侧下方会显示定额的层次目录,左侧会显示相应目录下的具体条目。当然,显示定额层次目录就是使用的TreeView控件,并且代码就是本文讲解的制作树状目录的通用代码。

通过在界面右侧选取定额目录,然后在左侧找到该目录下的具体条目后,双击该条目,会自动将数据输入到工作表中。

是不是很方便!

 

小结

本文重点介绍了制作树状目录的通用代码,并对代码进行了解释,最后使用两个应用实例讲解了代码的应用。

 

其实,TreeView控件的应用丰富多彩,本文只是讲解制作树状目录的通用代码,其他的留给读者自已探索,我们也会在后续专题系列中详细讲解该控件的应用。

 


 

如果您对本文介绍的内容还有什么好的示例,欢迎发送邮件给我:xhdsxfjy@163.com

也可以在本文下方留言,提出您的看法或建议。

本文属原创文章,转载请联系我或者注明出处。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多