4.1.2 控件和自定义控件
1、控件在程序设计中需要注意的问题
在前面的前面版设计中,曾经讨论过前面版控件的基本设计原则,这里要说明实际设计中需要注意的一些事项,尽管是很简单,但往往确被设计者所忽略,为以后的程序管理带来很大麻烦。
控件的“属性”设定
这里只谈两个简单问题:
a、属性Tab页中一些参数的设定
LabVIEW开发环境中的每个控件都有属于自己的属性。用鼠标右键单击该控件,系统会弹出一个迅捷菜单,用鼠标单击“属性”便可打开该控件的“属性对话框,见例图。
首先可以看到最上面的两个为控件“命名”的栏目:标签(Label)和标题(Caption)。它们两个在程序设计中都可以用来标明控件的名称,但也略有不同。
标签(Label)——标签是前面版和程序框图中该控件的标识。
我在程序设计中,通常使用“标签”的内容来表示控件名称。这样做的好处是在前面版和程序框图中都容易看到它的名称,方便查找和确认所使用的控件。
标题(Caption)——标题仅在前面版可见,在程序框图中是不可见的。标题不会影响控件的名称,也可以做进一步描述该控件的标签。
我在程序设计中,该部分可做为辅助说明或空缺。如果你的程序设计希望是多语言的,在这里也可以写入另一种语言的控件名(标签选择不可见,标题选择可见)。
该Tab页中的其它参数可参考应用方式来设定。
b、说明信息Tab页
这也是应该针对控件填写的部分,初学者往往对此重视不够(包括vi中这部分内容的填写)。将来在“即时帮助”中可以看到这部分说明,养成一个好的习惯是优秀程序员的基本素质。
下面的“提示框”内容是在程序运行中,当鼠标放到该控件时,系统黄色背景的提示条所显示的内容。我在程序设计中,通常不填写这部分,因为当鼠标在前面板上滑动时,会有很多黄色提示条显示出来,显得界面很凌乱。
对于数值型控件最好确定数值的范围、显示格式等等。
2、自定义控件
尽管LabVIEW图形化语言的控件选板提供了很多标准控件,包括系统、经典、新式等。这些标准控件也可以在程序设计过程,重新进行定义使用(自定义)。自定义控件在应用程序设计中,会经常用到。特别是,当前面板上要放置的同一类控件数量较多时,应该考虑使用自定义控件。当然,该控件将在其它面板上出现时,为保证界面风格的一致和统一,也需要考虑使用自定义控件。自定义控件可以使程序设计更灵活、更方便、更高效。
首先来看一个实际应用程序中的例子见例图,这是一个“工频64次谐波发生器”的前面版图。该谐波发生器可以产生工频范围:45.000-65.000Hz的基波频率(幅度5V)信号,并可以在上述任意基波频率下,附加产生2-64次的谐波分量。
任一次谐波分量的幅度设定为:基波信号幅度的:0.1%-15%范围内,
任一次谐波分量的相位设定可在:0、30、60、90、120、150…………...360度范围内。
该信号发生器主要用来评估采样式电能表、电力质量分析仪的谐波分析能力(试验不包括输入互感器部分)。
由此可见,我们需要在前面板上放置谐波幅度设定控件和谐波相位设定控件各63个。当然我们可以先设计好一个,然后再拷贝62个放到前面版上。可是,问题是 当用户要求改变控件的某个参数,诸如:大小、样式、颜色或者修改“相位角”等等,这时候麻烦可能就会来了,你必须一个一个的进行更改。做这样的工作,心情肯定是不愉快的,但也没办法,还得一个一个的耐心改动。而使用了自定义控件就可避免这样的麻烦发生。
自定义控件的实际应用方法
关于自定义控件的具体操作方法请看:
《实用教程》P350,P495
《从入门到精通》P170
从例图中可以看到一个控件可以自定义编辑设定为下面三种型式之一:
1、输入控件
2、自定义类型
3、严格自定义类型
a、输入控件的应用(Control)
自定义的输入控件实质就是统一控件的外观、大小。它主要应用在需要界面控件风格统一的场合。比如:在前面版上需要放置五个按键开关(或LED指示灯)并希 望它的大小、样式一致,此时就可以设计一个自定义的输入控件,然后在面板上放置五个。当然,在其它VI设计中也可以使用它们来保持整个程序风格的一致性。 在实际应用中它们的数据类型是相互独立的,自定义的控件以.ctl文件保存。
此时这些控件仅仅是外观、大小保持一致,还包括每个控件的”说明和提示...“的内容(但是每个控件的内容可进行更改)。
”说明和提示...“内容时该控件的简要介绍,通过“即使帮助”窗口可以查看到。在程序设计中,一般初学者很容易忽略此项内容的填写。
用鼠标右击该控件,在快捷菜单中选择:说明和提示...,进行填写。
比如:在程序设计中,某应用程序共有多个不同测试功能的界面出现(利用菜单及动态调用来切换,后面会谈到),每个界面都有五个不同功能的按键,为保证界面的风格一致,分别做五个自定义控件,每个按功能填写好:说明和提示...。这样在设计不同的界面时,都调用这五个控件,即保证了界面风格的统一,又减少了填写说明和提示...的次数。
b、自定义类型控件的应用(Type definitions)
自定义类型控件除了可以实现上述的统一控件的外观、大小外,还可以统一控件的数据类型。但还是无法限定它的数据范围和数据内容。只能修改它的数据类型,一旦修改了该控件的数据类型(修改.ctl文件),所有由该控件所产生的“实例”都将更改其数据类型。这在大型程序数据管理、修改方面很有好处。
c、严格自定义类型的应用(Strict Type def)
严格自定义类型控件是最为经常使用的自定义控件,在上面的具体例子中的“谐波次数”和“谐波相位”所使用的控件就是使用了严格自定义类型的控件。
严格自定义类型控件除了可以实现上述的统一控件的外观、大小、统一控件的数据类型外,还统一了数据范围和数据内容。对严格自定义控件修改任何参数,都将导致该控件所产生的所有实例都发生改变。
比如:修改自定义的“谐波次数”控件的某一数据,那么前面版上的所有此类控件的数据都发生改变。这样,当需要改变某一参数时,只要对严格自定义控件(.ctl)进行修改既可,所有该控件所产生的实例都会得到更改,大大的提供程序编制的效率和方便的维护。