微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > Tree控件的使用

Tree控件的使用

时间:01-09 来源:互联网 点击:

本节将重点讨论LabVIEW中的Tree控件,也许是控件本身的使用比较“麻烦”,导致很多程序员不愿意使用该控件。其实在大多数的应用程序中均可以看到Tree的身影,如Windows操作系统中的“资源管理器”左侧的文件列表,通常Tree控件可以用来显示一些有组织的、分类明确的数据。

1.1编辑Tree控件的外观

Tree控件位于LV的控件选板“List&Table”子选板中,如图 1所示。从背面板可以看出Tree实质上是一种字符串(String)类型,这难免会让人费解:如何将前面板大量的“条理性的数据”与String对应呢?


图 1 Tree控件
选择工具选板中的Edit Text工具,可以直接在Tree控件中输入数据。

  1. 通过Tree控件的右键快捷菜单Visible Items菜单项,可以改变Tree控件的显示外观,如图 2所示。可以逐一勾选/不勾选该菜单项中的菜单,就明确了各个菜单项对应的含义。


图 2 改变Tree控件的显示外观

  1. 在Visible Items中有一个Symbols菜单项,从外观上看勾选或不勾选该选项没有什么区别。原来,LabVIEW允许对Tree中的每一行指定一个符号,显示在行首。要显示该符号首先需要勾选Visible Items→Symbols选项,其次在某一行上右击弹出的快捷菜单上选择Item Symbol菜单项,并选择一个符号。如图 3所示。LabVIEW提供了42种符号可供选择,其中第1种为空(默认值,因此前面在勾选Visible Items→Symbols后看不到变化)。可以通过该方式为每一行添加各种不同的符号。



图 3 选择Symbol

  1. 在Windows资源管理器中,我们可以看到Tree是能够显示层级关系的。这一点可以通过选择右键快捷菜单中的Indent Item和Outdent Item实现,在第图中的3行上右击选择Indent Item,则第3行变成了第2行的子行,如图 4所示。此时,LabVIEW会自动添加一个“+”或“—”符号,如同Windows资源管理器中显示的一样。程序员可以通过选择快捷菜单中的Expand/Contract Symbol Type选项来改变该符号的显示样式。


图 4 改变Tree控件的层次关系

  1. 那么LabVIEW究竟如果把Tree控件上显示的诸多字符串表示在底层函数面板中呢?我们可以尝试使用一个String显示件验证Tree控件的输出,其前面板和背面板如图 5所示。运行该VI,并且选择Tree的不同行(随着选择的不同,被选中的行会以蓝色高亮显示,比如图中的第3行),观察String显示件中的值。可以得到Tree控件的输出好像是每一行的首列字符串,但是第4行的输出却是A_1,这是一个从来没有输入过的值。


图 5 测试Tree控件的输出字符串
选择Tree右键快捷菜单中的Edit Item…菜单项,将弹出如图 6所示的对话框。对话框的左侧是Tree控件显示的内容,改变控件的选择,可以看出右侧的Tag会随之改变,并且第4行的Tag值正好是A_1。原来Tree控件为每一行自动分配了一个唯一的Tag值(该值可以在Edit Item对话框中修改,但是必须确保唯一性和非空性),其输出则是当前选中行的Tag值。我们可以尝试将第4行的Tag值强行修改为A,此时LabVIEW将会以红色背景显示Tag值,表示该Tag值重复,无法正常使用(也就是说Tree控件中每一行的Tag值必须是唯一并且非空的)。


图 6 Edit Tree Items对话框

1.2Tree控件对应的事件

在背面板上放置一个事件结构,并且选择Tree控件,可以看到其对应的所有事件,如图 7所示。本节只介绍一些特殊的Tree事件。


图 7 Tree控件的事件

  • Edit Cell事件

该事件与multicolum listbox中的Edit Cell事件一样,当用户编辑控件中的内容时被触发。分为Edit Cell消息型事件和Edit Cell?过滤型事件,后者可以根据程序员的设计取消掉该事件。
如程序运行时只允许用户修改Tree控件第1列的值,而不允许修改其他列的值。可以使用Edit Cell?过滤型事件实现该功能,具体如图 8所示。要允许用户在程序运行时编辑Tree控件的值需要首先勾选Tree控件右键快捷菜单中的Editable Cells菜单项,然后运行该程序,在需要修改的单元格中单击并输入响应的字符。可以看出除了修改第1列的值以外,对其它列的修改都不会成功。
也可以把本例延伸一下,比如只允许用户输入特定的字符串(大写字母,数字等),应该如何处理呢?


图 8 Tree控件的Edit Cell?过滤型事件

  • Double Click事件

从名称可以看出,该事件在用户双击Tree控件时被触发,如图 9所示。图中事件数据节点中的Tag表示用户双击了哪一行,但是是否有一种方式明确了用户到底双击了Tree控件中的哪一个区域呢,具体为哪一行哪一列呢?显然左侧的Coords表示双击的坐标值,我们可以通过Tree控件的“P

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top