5.1.1 控件和自定义控件


      在LabVIEW开发环境中,前面板所放置的控件来自开发环境所提供的“控件选板”上。控件分成输入控件(按键、开关、旋钮等等)和输出控件(指示器、图形指示器、图表等等)两类。


1、控件选板(Controls)

Picture
      在打开的vi前面板上,用鼠标右键单击前面板空白处,开发环境就会自动弹出“控件选板”。参见左图所示。

      在
“控件选板”上按不同的模式列出虚拟仪器(vi)所需要的控件,比如数值控件、布尔控件、字符串和路径控件、枚举控件、列表控件、图形显示控件、容器控件、I/O控件、Refnum控件、修饰控件等等。这些都是虚拟仪器应用中不可缺少的操作或指示部件。

     
有些控件的实际含义很清晰,一看就清楚所表示的物理意义或者说实际意义,比如数值控件、布尔控件、字符串和路径控件、枚举控件、列表控件、图形显示控件、容器控件等等。通常它们可以直接呈现在前面版上。并非所有形式的控件都可能出现在用户所视的前面板上,有些控件因程序设计的要求可能仅仅使用在子vi的前面板上或前面版可视区域之外,比如数组控件、簇控件、I/O控件、Refnum控件等等。

      这些控件基本满足了虚拟仪器设计的需求,也是配合虚拟仪器设计而专门抽象处理出来的一些基础控件。这也是LabVIEW与其它编程软件最大的不同之处。


2、控件的简单修改

Picture
在程序框图上,弹出快捷菜单
Picture
在前面版上,弹出快捷菜单
      无论是在前面板还是在程序框图上,用鼠标单击该控件都可以弹出各自的快捷菜单。在快捷菜单上选择相应的选项就可以修改、配置控件的一些基本特征。
      关于快捷菜单的使用,许多LabVIEW的书籍都做过介绍,这里就不多谈了。下面仅谈谈几个常见的问题。

控件的标签(label)和标题(Caption)

Picture
      如果我们分别查看上面两图中的Visible iterms项就可以发现,在程序框图的快捷菜单中只能看到首先可以看到Label(标签)项,在前面版则可以看到如左图所示的更多项。

      Label(标签)和Caption(标题),它们两个在程序设计中都可以用来标明控件的名称,但是也略有不同。

标签(Label)——标签是前面版和程序框图中该控件的标识。
      在程序设计中,通常使用“标签”的内容来表示控件名称。这样做的好处是在前面版和程序框图中都容易看到它的名称,方便查找和确认所使用的控件。

标题(Caption)——标题仅在前面版可见,在程序框图中是不可见的。
      在程序设计中,该部分可做为辅助说明或空缺。如果你的程序设计希望是多语言的,在这里也可以写入另一种语言的控件名(标签选择不可见,标题选择可见。也可以通过属性设定来程控的设定)。

      这些也可以通过控件快捷菜单中的属性(Properties项)来设定。


Description and tip(说明信息)

Picture
      这也是应该针对控件填写的部分,初学者往往对此重视不够(包括vi中这部分内容的填写)。将来在“即时帮助”中可以看到这部分说明,养成一个好的习惯是优秀程序员的基本素质。

     下面的“提示框”内容是在程序运行中,当鼠标放到该控件时,系统黄色背景的提示条所显示的内容。在程序设计中,通常不必填写这部分内容,因为当鼠标在前面板上滑动时,会有很多黄色提示条显示出来,显得界面很凌乱。


3、自定义控件

Picture
      尽管LabVIEW开发环境中的的“控件选板”提供了很多实用的标准控件,包括系统、经典、新式等。这些标准控件也可以在程序设计过程,重新进行自定义来使用。自定义控件由于它的实用性,所以在应用程序设计中会经常用到。特别是,当前面板上需要放置的同一种控件的数量较多时,应该考虑使用自定义控件。当然,如果该控件也将会在其它面板上出现时,为了保证界面风格的一致和统一,也需要考虑使用自定义控件。自定义控件可以使程序设计更灵活、更方便、更高效。

      通过左图所示控件的快捷菜单选择:Advanced >Customize.....。就会弹出一个自定义控件的前面板。如下图所示。
     
     


Picture
      从左图中可以看到一个控件可以自定义编辑设定为下面三种型式之一:
      1、Control(输入控件)
      2、Type Def.(自定义类型)
      3、Strict Type Def.(严格自定义类型)

      下面就谈谈这三种自定义控件的不同之处与何时、何地使用它们。


a、自定义“输入控件”

Picture
      选择左图中的“Control"即创建了一个自定义“输入控件”。
      自定义的“输入控件”实质就是统一了该控件的外观、大小。
      它主要应用在需要界面控件风格统一的场合。比如:在前面版上需要放置五个按键开关(或LED指 示灯)并希望它的大小、样式一致,此时就可以设计一个自定义的输入控件,然后在面板上分别放置五个。当然,在其它VI设计中也可以使用它们来保持整个程序风格的一致性。 在实际应用中它们的数据类型是相互独立的,自定义的控件以.ctl文件保存。

       此时这些控件仅仅是外观、大小保持一致,其它每个控件的“数据类型”及“标签”和”说明和提示...“的内容都可进行更改。

       比如:在程序设计中,某应用程序共有多个不同测试功能的界面出现(利用菜单及动态调用来切换,后面会谈到),每个界面都使用到五个不同功能的按键(即时帮助、开始测量、生成报告、停止测量、退出测量),为保证界面的风格一致,分别做五个自定义控件,每个按功能填写好:说明和提示...。这样在设计不同的界面时,都分别调用这五个不同的控件,即保证了界面风格的统一,又减少了填写说明和提示...的次数。


Picture
下面的五个自定义“输入控件”

b、自定义类型控件

Picture
      自定义类型控件除了可以实现上述的统一控件的外观、大小外,还可以统一控件的数据类型。一旦修改了该控件的数据类型(修改.ctl文件),所有由该控件所产生的“实例”都将更改其数据类型。这在大型程序数据管理、修改方面很有好处。但是,你无法限定它的数据范围和数据内容。此时这些控件仅仅是外观、大小保持一致,数据类型保持一致。其它每个控件的“标签”和”说明和提示...“的内容都可任意进行更改。

      实际上更多使用的是下面自定义严格类型控件。



C、自定义严格类型控件

Picture
      严格自定义类型控件是最为经常使用的自定义控件,严格自定义类型控件除了可以实现上述的统一控件的外观、大小、统一控件的数据类型外,还统一了数据范围和数据内容。对严格自定义控件修改任何参数,都将导致该控件所产生的所有实例都发生改变。其它每个控件的“标签”和”说明和提示...“的内容都可任意进行更改。

     
通过下面的具体例子中的“谐波次数”和“谐波相位”来进一步说明它所带来的好处。下图所示的是一个谐波信号发生器的前面版。它可以根据设定产生2-64次谐波,并且各次谐波的幅度和相位都可以独立设定(下图中的左半部分)。谐波次数设定和相位设定的控件就是使用了严格自定义类型的控件。
       比如:只要修改自定义的“谐波次数”控件的某一数据,那么前面版上的所有此类控件的数据都发生改变。这样,当需要改变某一参数时,只要对严格自定义控件(.ctl)进行修改既可,所有该控件所产生的实例都会得到更改,大大的提供程序编制的效率和方便的维护。试想一个一个的来修改将会是多么痛苦的工作。


Picture

      关于控件的内容就介绍这些了,其实除了对控件进行自定义外也可以自行设计控件的外观,关于如何自行设计控件的外观,NI网络讲坛做过介绍大家可作为参考,这里就不谈了。此外,NI的开发者社区也提供了一组自行设计的控件,这里给出它的链接


Picture
上一页
Picture
下一页

这里也可以留言,但是其他到访者将不会看到