1、1,第11章 属性节点和方法节点,2,引子,在面向对象的编程中,我们将类中定义的数据称为属性,而函数称为方法。实际上,LabVIEW中的控件、VI、甚至应用程序都有自己的属性和方法,譬如一个数值控件,它的属性包括它的文字颜色、背景颜色、Caption和Label等;,3,本章内容,11.1 属性节点(Property Node)11.2 方法节点(Invoke Node)11.3 通过子VI调用控件的属性和方法11.4 几种常用控件的编程举例11.5 小结,4,11.1 属性节点(Property Node),属性节点可以用来通过编程设置或获取控件的属性,譬如在程序运行过程中,我们可以通过编程
2、设置数值控件的背景颜色等属性。,Ring控件的属性节点举例,5,11.1 属性节点(Property Node),举例,通过Visible属性控制按钮是否可见,6,11.1 属性节点(Property Node),举例,在事件结构中使用属性节点,7,11.2 方法节点(Invoke Node),方法节点和属性节点非常类似,方法节点就好比控件的一个函数,它会执行一定的动作,有些时候还需要输入参数或返回数据。,树形控件的方法节点函数菜单及其方法节点示例,8,11.3 通过子VI调用控件的属性和方法,一般情况下,将控件作为子VI的输入端时只能传递控件的值,而不能传递控件的属性 。那么如何才能在子VI
3、中调用上层VI中控件的属性和方法节点呢?这就需要使用Refnum控件作为子VI的输入端子,在调用时将控件的Reference与Refnum端子连线即可。,9,11.3 通过子VI调用控件的属性和方法,通过子VI调用控件的属性节点示例,10,11.4 几种常用控件的编程举例,11.4.1 Ring控件和Enum控件对于两种控件,用户都是一次只能选择其中一个项目,控件的输出值都为数字。不同的是Ring控件各项目的值是可以任意设定的,而Enum控件各项目的值一定是从0到n-1(n代表项目个数),这是因为Enum控件才是标准的枚举类型。Ring控件的项目可以是字符串或是图片。,11,11.4 几种常用
4、控件的编程举例,通过属性节点来设置Ring控件的选项,12,11.4 几种常用控件的编程举例,获取Ring控件或Enum控件的当前选中文本,13,11.4 几种常用控件的编程举例,11.4.2 列表框(Listbox)对于Ring控件和Enum控件,用户每次只能选择一个选项。而通过列表框用户每次可以选择一个或多个选项,甚至0个选项,通过编程编辑列表框选项,14,11.4 几种常用控件的编程举例,读取列表框选中选项的名称,15,11.4 几种常用控件的编程举例,11.4.3 树形控件(Tree Control)通过编程为树形控件添加项目必须通过属性节点和方法节点才能实现,16,11.4 几种常用
5、控件的编程举例,通过编程为树形控件添加项目,17,11.4 几种常用控件的编程举例,11.4.4 自动图例举例,18,11.4 几种常用控件的编程举例,19,11.5 小结,从本章的例子可以看出,通过属性节点和方法节点可以让控件的功能与动态行为更加丰富。在LabVIEW编程中,当某种功能很难用普通的VI函数实现的时候,也许通过属性节点和方法节点就能很轻松地解决。所以若LabVIEW编程者想学到更多的编程技巧可以更多的去尝试控件的属性节点和方法节点。,20,小试身手,1. 在第6章习题1的基础上利用“报警信息”控件的blinking属性,实现在输出报警信息的同时伴随闪烁,如下图所示。为了能看到闪烁效果,需要将采样间隔设到5秒以上。,21,小试身手,2. 本书第156页中的图11.14所示的例子存在bug,for循环部分应该改为下面左图所示。在此基础上将for循环部分封装为子VI,利用编程生成如下面右图所示的树。,