在调用XControl的外观VI中得到一个引用
主要软件:
主要软件版本: N/A
主要软件修正版本: N/A
次要软件: N/A
问题: 我试图实现当鼠标进入前面版我的XControl范围时出现变动鼠标图标的功能。我想在我的外观VI中实现这个功能,但是我必须要得到使用这个XControl的VI引用才行。我试图在外观VI中使用Call Chain.vi,但是它只是输出一个叫Proxy Caller的引用。我该如何能够得到使用这个特殊XControl的VI引用呢?
解答: 每一个XControl都有一个簇控件,叫做Container State。这个控件包括了当前XControl实例的状态,例如它是输入控件还是显示控件。这个簇也包含了XControl自己的控件引用。
你可以将这个控件引用连入一个属性节点,然后选择属性
Owner 来得到该XControl属于的更上层的对象。接着你可以将这个引用连入另一个属性节点,选择属性
Owning VI 来得到这个使用该特定XControl的VI引用,如下图所示。
如果你需要在你的外观VI 中频繁使用这个VI引用的话,你可以考虑将VI引用保存在显示状态簇(Display State Cluster)中,这样你就不用在每次需要使用它时再重复上述的操作了。根据一下步骤来将VI引用保存在你的Xcontrol的显示状态簇中:
- 在你的XControl项目库中打开状态控件文件(State Control)。该控件的缺省名称为
State 1.ctl
, 但是你可以将它事先保存为另一个名称.
- 在控件面板Modern » Refnum » VI Refnum 中选择一个VI引用控件,并将该控件放于类型定义状态簇控件中。
- 保存状态控件,并关闭控件编辑窗口。
- 打开外观VI,选择Display State Change 事件框。每次你在一个VI中放入一个新的XControl实例或打开一个使用该XControl的VI时,该事件都会触发。
- 接着上一步,从Container State 簇中解捆绑XControl引用,并且得到调用该XControl实例的VI引用。
- 使用the Bundle by Name VI 将该VI引用捆绑入 Display State 簇中,该簇应该已被更新为包括一个VI引用。
- 使用 the Bundle by Name VI 连接一个True常量到 Action 簇的State Changed? 元素中. 这样做将会通知LabVIEW Display State 簇中的信息已经改变,并且需要被处理.
最后的事件结构框应入下图所示:
现在你可以任何想使用VI引用的时候,从
Display State 簇中解捆绑来得到.
相关链接: LabVIEW 8 Help: Using XControlsDeveloper Zone Tutorial: Creating New Front Panel Objects with LabVIEW XControls
附件: - Display_State_Change_Event.GIF
- XControl_OwningVIRef.GIF
- ATTMI937
报告日期: 03/09/2006
最近更新: 09/23/2007
文档编号: 3V8B3HUM
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.