ui_xcontrol #67
Replies: 3 comments 8 replies
-
阮老师,Xcontrol控件在同一个VI里面可以多次重复使用吗(像自带的那些控件一样,可以放置任意多个)?我试了一下,好像有问题。 |
Beta Was this translation helpful? Give feedback.
-
之前博客上的相关文章,搬到这里: XControl 是 LabVIEW 8 中出现的新功能。关于 XControl 功能介绍和实现方法可以参见这个网址:http://zone.ni.com/devzone/conceptd.nsf/webmain/1AE46AF02D67AF468625706E006E577C。 LabVIEW 为我们提供了大量漂亮的控件,可以让我们非常方便地就搭建出一个程序界面来。然而,对于追求完美的用户而言,LabVIEW 提供的为数有限的控件是远远不够的。比如图1,是 LabVIEW 8.2 的一个新功能—导入导入共享库向导的界面。在它右上方有四个按钮,这四个按钮有着特殊的外观图标,在 LabVIEW 中并没有直接提供这样的按钮。要拥有这样的按钮,并保存下来以供再次使用,就只能自己来制作这样一个自定义控件。关于(用户自定义控件可以参考文章《用户自定义控件中 Control, Type Def. 和 Strict Type Def. 的区别》) 自定义控件虽然可以定义控件的外观,但无法定义控件的行为。功能复杂一点的控件,.ctl 文件就爱莫能助了。还是以图1 为例,它的 Include Paths 控件是“一个”功能比较复杂的控件,它比 LabVIEW 自带的列表框多了编辑功能。用户添加或编辑一个路径时,这个控件要为用户在所编辑的路径项目上,显示出供编辑使用的文本框和浏览路径按钮。 我们虽然看不见图1 例子中的程序框图,但是可以想象,上述的一系列操作,如判断 String 和 Button 应当显示的位置;然后挪动它们、把 String 值传给 Listbox;处理用户对他们操作的消息等等,都会为这个程序添加不少复杂的代码。这些代码应该是与程序的其它部分没有任何直接关系的。但是如果把它们也写在这个界面 VI 的程序框图上,一方面影响了程序的可读性;另一方面,编程人员有可能在更改程序其它问题时,一不小心改变了这部分代码,降低了代码的安全性。 XControl 的出现终于为这个问题提供了一个比较完美的解决方案。图1 中我们提到的七个应当划分在同一组件的控件可以被制作成一个 XControl。这个 XControl 的外观就是图1 中上半部分七个控件组合在一起的样子。XControl 与用户自定义控件相比,它不仅定义了控件的外观,更重要的是,开发人员可以通过编写 LabVIEW 代码定义 XControl 的行为,这些代码是对外隐藏的。开发人员还可以定义 XControl 的属性和方法,通过 Property Node 和 Invoke Node 在程序中使用这些属性和方法。 XControl 具有封装的特性。因此我在《利用 LabVIEW 工程库实现面向对象编程》一文中提到,同样可以使用 XControl 来达到面向对象的编程方法。但是 XControl 不具备继承和多态的特性。与之相比较,Library 和 LVClass 只能够把程序中的某些功能封装成模块,而涉及到包含界面的模块,就无能为力了。XControl 则非常适合制作有界面的程序组件。 |
Beta Was this translation helpful? Give feedback.
-
之前博客下的留言: Qizhen 回复 回复 WL 回复 死了都要C 回复 WL 回复 Boone 回复 回复 回复 |
Beta Was this translation helpful? Give feedback.
-
ui_xcontrol
开源共享版本说明
https://lv.qizhen.xyz/ui_xcontrol
Beta Was this translation helpful? Give feedback.
All reactions