4.1.5 X控件(XControl)及应用实例
1、XControl简介
尽管LabVIEW开发环境中提供了众多美观、实用的控件,并为每个控件都配备了丰富的属性和方法,但是可能还无法满足工程应用中的实际需要。
人们期待更美观、更灵活、更有创意、更富有个性的控件使用在自己的应用程序设计中。在LabVIEW8.0发布后,人们可以利用新的特性XControl来实现这一目的。
XControl是用于LabVIEW程序设计中,自行创建的、复杂的、富有个性的一种新控件。一个典型的XControl由功能、属性和方法组成。XControl功能是XControl的组件,保证XControl正常运行。功能决定了XControl的外观、数据类型、显示状态和初始化。
例图中显示的是LabVIEW自带的XControl例程。
2、创建XControl(LabVIEW 8.5.1中文板)
创建XControl有两种方法:
1、在LabVIEW项目下创建,假如:我们已经有了一个“谐波信号发生器”的项目,在这个项目下,按下面的例图就可以创建一个XControl。
2、在LabVIEW导航界面选择:新建〉更多〉其它文件〉XControl
3、保存XControl
我们用第二种方法来创建一个Xcontrol。在上个例图中点击“确定”后,我们就创建了一个新的Xcontrol,如例图所示。
在此例图中我们看到如下几个单元:
数据1:用来定义XControl的数据类型。
状态1:定义所有XControl内部使用到的数据。
外观1:这是XControl中最主要的功能VI,用以实现XControl的界面和界面上的行为。
初始化1:设置XControl的初始状态。
关闭该界面,将保存所有部件(也可以不关闭,直接设计各部件),会看到以下保存提示:
“ 点击“保存”,系统会一一提示各部件的保存的地点和名称。
假如在桌面上已经有了一个名字为:“X控件”的文件夹,一次将需要保存的部件放入该文件夹(此时可对部件从新命名)。其它名字不变,我们仅将XControl的名字改为:谐波设定XControl。
好了在”X控件“文件夹里,我们已经看到了这个”谐波设定XControl“的全貌,它一共包含有五个项目,见下个例图。现在开始准备按我们的要求来设计这个”谐波设定XControl”。
4、谐波设定XControl
我们设计这个XControl干什么呢?还记得我们前面在“自定义控件”中,谈到的“工频64次谐波信号发生器”吗?那里需要63个控件来设定各次谐波信号的相位,63个控件设定各次谐波的幅度,当时我们谈到使用“自定义控件”来解决维护、修改的问题。其实还有一个问题我们没有在那里讲述,就是如何清晰的判断那个控件已被选择设定,因为前面版上布满了这些控件,如何准确区分某个控件是否正在使用是一个人机对话设计的问题。
也就是说:实际操作使用时,并不是所有的谐波都被选择设定,而是选择设定我们感兴趣的谐波影响做试验。
为了解决这个问题,我们设计使被选中的控件文字背景呈现出绿色,这样就可以看到那些参数被选择了。而它的实现就是利用了XControl。
其实使用事件结构和属性节点也可以实现这个目的,但是这么多控件(126个)的事件结构太复杂了,使用XControl可以很容易的实现这个目的。
5、谐波相位设定XControl的设计方法
该XControl的基本作用:当谐波相位设定值为:“0”时,控件字符的背景为“白色”;当谐波相位设定值非“0”时,控件字符的背景为“淡绿色”。
这样尽管在前面板上的控件很多,但是可以清晰的看到那些控件已经被选择设定。
下面讨论如何设计实现这一要求:
a、数据1.ctl的设计 这部分做了几项设计工作: |
注意:图片介绍的枚举型控件有问题(下拉列表也有相同的问题),无法实现操作,而使用数值型、其它枚举型还没发现问题,但图片已做好,只有等待以后更新图片。 |
例图是没有设计之前的“外观1”程序框图。我们要设计的只有两个单元:
1、添加一个事件分支
用鼠标右击“事件”结构,在下拉菜单中选择:添加事件分支....,然后按下图编辑该新添加事件结构。
2、编辑事件结构程序
在刚创建的事件分支中,按下图进行编辑,就可完成设计。
保存所有的设计。
这里要说明的是:当我按上方法选择控件类型后,发现不能实现功能,将“系统枚举”换成“了”经典枚举“则可以实现功能,这个问题还有待研究、探讨。但程序设计的步骤是一样的,希望注意!
上图是在vi中应用的示例,下图是“幅值XControl"的应用程序实例。
6、最精美的XControl
我对XControl的设计应用不是很多,目前也没有更多的应用实例介绍给大家,但是当我看到这个XControl的设计实例后,我感觉XControl太伟大了!整个一个计算器用一个XControl来实现(浅灰色的面板就是一个XControl——包含几十个“按键”和多个输入控件、显示控件),简直是妙不可言!这个实例来自NI公司的网站。
7、小结
XControl可真是个好东西,无奈中文的详细介绍很少,许多书都是按NI提供的例程来表述,使初学者很难领略到它的魅力,这绝对是一个表现你的想象力和创造了的好工具,这个例子完全证明了这一点。
LabVIEW 8.0之前的控件似乎都是“冷冰冰”的,毫无生气的,现在完全可以通过XControl来改变这一切,使貌似冷冰冰的“控件”也变得极富有“灵气”!
此外,阮先生和CSXCS_366也都做过相关论述,他们的技术能力绝对在我之上上,感兴趣的可以到我的博客查看他们链接。