Differences Between Type Definitions and Strict Type Definitions

Updated Aug 23, 2023

Reported In

Software

  • LabVIEW Full
  • LabVIEW Professional
  • LabVIEW

Issue Details

  • In LabVIEW, I can create a Type Definition or a Strict Type Definition. Why would I use one over the other? What is the difference between the two?
  • I have a Type Definition or a Strict Type Definition where I change the default values, why isn't this change propagating to each instance of the control that I made? 
  • My connection arrow disappears from my cluster in the the Front Panel when I make changes to the Type Definition.

Solution

Overview

Type Definitions and Strict Type Definition in LabVIEW are both custom controls (*.ctl files) that can be placed in any VI. When the *.ctl file is changed, every VI that uses that control will also be changed which eliminates the need to go change each VI yourself. When a Type Definition Control is used, LabVIEW ensures that the data type is the same anywhere the control is used. A Strict Type Definition is more restrictive and LabVIEW ensures that almost everything about the control remains the same.

Type Definition

A Type Definition can have a different name, description, default value, size, color, or style of control (such as a knob instead of a slide), as long as the data type matches the master copy of the control. A Type Definition only identifies the correct "type" for each instance of a custom control. The "type" does not include things such as the data range for a numeric control or item names in a ring control. For example, if you change the data range on a numeric control or an item name on a ring control that are part of a Type Definition control, it will not change these properties for all instances of the control. However, if you change the item name in a Type Definition for an enumerated type (enum), all instances will change as well since the item name is part of the "type" for an enum. 

Strict Type Definition

Strict Type Definition control forces almost everything about the control to be identical, including its size, color, and appearance. Strict Type Definitions are more restrictive and, unlike Type Definitions, they define values for properties such as range checking on numeric controls and item names on ring controls. The only flexibility to a Strict Type Definition is the name, description, and default value, which can be different for each instance of the control. The only properties available for a Strict Type Definition control are those that affect the appearance of the control such as Visible, Disabled, Key Focus, Blinking, Position, and Bounds. For example, if you have a Strict Type Definition that is made up of a cluster of various controls, properties for each individual control would not be available. Only appearance properties for the overall cluster would be available. You can't use Data Binding with Strict Type Definitions, it will break the connection arrow in the Front Panel for LabVIEW 2020 SP1 and previous versions if you update your Strict Type Definitions; newer versions won't allow you to enable Data Binding for individual instances of Strict Type Definitions.

Additional Information

Most programmers use Type Definitions and Strict Type Definitions to create custom controls that are a cluster of many controls. Additional items can then be added to the cluster in the customer control and easily propagated throughout your application. This is particularly useful if you have subVIs that must interact with the cluster as you do not have to update the cluster manually for each subVI.