XControl: Difference between revisions
Added OptimizeDataUpdate |
|||
Line 38: | Line 38: | ||
*[[XControl:Abilities|Abilities]] | *[[XControl:Abilities|Abilities]] | ||
*[[XControl:Methods|Methods]] | *[[XControl:Methods|Methods]] | ||
*[[QControl|QControls]] | |||
[[Category:XControl]] | [[Category:XControl]] |
Revision as of 04:34, 1 December 2018
Introduction
XControls are introduced in LabVIEW 8.0 and enhance the power of front panel objects in great ways.
Essentially an XControl is a front panel object with dedicated code linked in to react on certain user events.
An XControl exists of several parts, managed in a .xctl file. The .xctl file is a XML-file like the project-file. Other parts of the XControl are abilities.
Limitations
An XControl functions like a subpanel in the hosting VI. Subpanels (and therefore XControls) can not be placed inside an array. Note that you can define your XControl data as an array of any LabVIEW data type, and you can use array controls in the facade vi.
Using LabVIEW native objects (.lvclass files) inside the state control of an XControl tends to crash LabVIEW for versions less than 8.5.1 when the XControl is used in a different application instance.
Tricks
- If you require a variable number of runtime instances of your XControl, Jarrod Slocum of National Instruments has created an example Linked Object List based on a Subpanel inside an XControl.
- If you want to react to dynamic events (or user events) you need them to register at the XControl Facade before the event happens.
- If Façade is not executing fast enough to keep up with data updates, it causes the updates to queue up. The updates will happen even after the VI stops running. To reduce data updates:
Thanks to Ram Kudukoli (of NI R&D) for sharing this with us at the recent CLA Summit:
- Open the Xcontrol .xctl file in a text editor like Notepad.
- Add the bolded line shown below:
<Property Name="NI.Lib.Version" Type="Str">1.0.0.0</Property> <Property Name="NI.XClass.Flags" Type="Int">0</Property> <Property Name="NI.XCtl.OptimizeDataUpdate" Type="Bool">true</Property> <Property Name="NI.XItem.DeclaredLeakProof" Type="Bool">false</Property>
- Save the .xctl file.