LabVIEW Controls Parts IDs

Every LabVIEW’s control part contains a “part ID” field which determines its purpose and functionality in the control. For example, a digital numeric control contains two BigMultiCosmetic parts for the increment and decrement buttons; the part ID is what determines which one is which. The Parts Window in the control editor displays the part ID as the textual name for the part, though the actual number is only visible in Heap Peek.

List of Parts IDs:

Part IDLong NameDescription
1Cosmetic
2Increment
3Decrement
4Large Increment
5Large Decrement
6Pixel Increment
7Pixel Decrement
8Housing
9Frame
10Numeric Text
11Text
12Ring Text
13Scrollbar
14Ring Picture
15Radix
16Name Label
17Scale
18X Scale
19Y Scale
20Out of Range Box
21Boolean Button
22Boolean TextApparently lost “Size to Text”
23Slider, Needle, or Thumb
24Set to Default
25Decoration
26List Area
27Scale Marker
28Content Area
29DDO Frame
30Index Frame
31Fill
32Graph Legend
33Graph Palette
34X Fit Button
35Y Fit Button
36X Fit Lock Button
37Y Fit Lock Button
38X Scrollbar
39Y Scrollbar
40Scale Tick
41Color Area
42Palette Background
43Control or Indicator Symbol
44Extra Frame Part
45Scale Min Tick
46Pix Map Palette
47Select Button
48Text Button
49Erase Button
50Pen Button
51Sucker Button
52Bucket Button
53Line Button
54Rectangle Button
55Filled Rectangle Button
56Oval Button
57Filled Oval Button
58Pattern
59Foreground Color
60Background Color
61Pix Map Palette Extra
62Zoom Bar
63Boolean True Label
64Boolean False Label
65Unit Label
66Annex
67Old Graph Cursor
68Z Scale
69Color Ramp
70Output Indicator
71X Scale Unit Label
72Y Scale Unit Label
73Z Scale Unit Label
74Graph Move Tool
75Graph Zoom Tool
76Graph Cursor Tool
77Graph X Format
78Graph Y Format
79Combo Box Button
80Diagram Identifier
81Menu Title Label
82Caption
83Refnum Symbol
85Formerly Annex2
86Boolean Light
87Boolean Glyph
88Boolean Divot
89Boolean Shadow
90Tab
91Page List Button
92Tab Caption
93Tab Background
94Scale Name
95Slide Cap
97Contained data type
98Position data type
99Tab Glyph
100Grid
101Num Label
102Split Bar
103Mutli Y-Scrollbar
104Graph ViewPort
105Grab Handle
106Graph Splitter Bar
107Graph Legend Area
108Graph Legend Scrollbar
109Data Binding Status
110Ternary Text
111Ternary Button
112Multi-Segment Pipe Flange
113Multi-Segment Pipe Elbow
114Multi-Segment Pipe Pipe
115Graph Legend Frame
116Scene Graph Display
117Overflow Status
118Radix Shadow
119Custom Cosmetic
120Typedef Corner
8000Non-Colorable Decal
8001Digital Display
8002Array Index
8003Variant Index
8004Listbox Display
8005Data Display
8006Measure Data
8007kNotUsed4Apparently not a valid part.
8008Tree Legend
8009Color Ramp Array
8010Type Def’s Control
8011Cursor Buttons
8012High Color
8013Low Color
8014Graph Cursor
8015Graph Scale-legend
8015Table
8016I/O Name Display
8017Tab Control Page Selector
8018Browse Button
8019Graph Plot Legend

Each Control or Indicator in LabVIEW consists of parts. Parts are the individual elements which make up all controls within Front Panel of a VI.

Control editor allows viewing list of parts in a Control, and modifying their properties. Parts can also be browsed through Heap Peek, and using XML Heap storage format.

Useful Tools to inspect Parts of the Controls (you need to enable “Debug Mode” in LabVIEW):

"LVdebugKeys=True"

Heap Peek

Heap Peek is a debug feature available at least since LabVIEW 3.0. It allows to view internal data structures created for all loaded VI files, including Front Panel Heap and Block Diagram Heap. The feature is intended for use by LV R&D, though users may in some cases be instructed by LV Support to check something there.

Enabling Heap Peek

The Heap Peek keyboard shortcut is by default disabled in fresh installations of LabVIEW. To enable it:

Then, to trigger the Heap Peek window:

  • Open your VI
  • Press CTRL+SHIFT+D+H. On Mac, use the command key instead of CTRL. This will open the Heap Peek window.

Using Heap Peek

The window is divided into 5 sections:

  • Loaded Container Files are in top-left,
  • Heap View is top-right,
  • Structure selection for info pane in middle-left,
  • Toolbar at the middle,
  • Information pane is at base.

The first section, as for usage flow, is top-left one. Start there, by left clicking to select the specific file and specific heap you want to look at. When the heap is selected, you can display many details on it by clicking rows of either top-right or middle section. These details will show at base, in Information pane.

Note: Heap Peek only displays information and does not have any ability to change the objects. It does, however, display the locations in memory where the information is stored, which makes it easy to use external memory editing software for this purpose.

Loaded Container Files list

The list is divided into Contexts. In each of these, you can see memory location of the item (within LabVIEW process memory), and entries marked BDHP or FPHP.

  • BDHP is Block Diagram Heap
  • FPHP is Front Panel Heap

Note: There are VIs in LV that are not real VIs (for example, a pseudo VI that is created to represent a Call By Reference to another application instance on another machine), and attempting to do Find to jump to their components can cause problems because those VIs never expect to actually draw themselves.

Heap View

Heap, for LV, is really a Front Panel or Block Diagram. Despite the name, they don’t really have a heap-like structure. Both FP and BD are stored in form of a tree, strongly inspired by XML format. The main difference is - the LV Heap format is binary, not text-based.

In Heap View, Heaps are displayed in a flattened form, not in its full tree-like glory. Part of the entries show properties of the whole pane, and the rest is controls, indicators and other elements added to the pane.

The view for FPHP reveals that controls and indicators are composed of several parts - ie. Numeric controls consist of: Label, Frame, Up/Down buttons, Edit field, Radix and Annex. Each part has partID, which is used by LV to identify type of that part.

Note: To learn more about LV Heaps, consider exporting a few to XML, and looking at them there. The flat list visible in Heap View will be very helpful when you understand them, but it’s not the best way to acquire that understanding.

Structure selection

Here you can select one of the structures within VI files other than FPHP/BDHP. These are per-file, not per-heap - so you won’t find any difference in them if you select different part of the same file in Loaded Container Files list.

The selectable options are:

  • VI Fields - lists values of many common settings and flags of the VI file
  • DS Fields - lists Data Space properties, including Table of QEs and Table of TMEs
  • OH Fields
  • Stats - statistics for objects used within Heaps
  • Link Info - content of all LinkObj lists
  • Names In Memory
  • IL Code Stream - Prints Intermediate Language Code used during code compilation process
  • Code Disassembly - Prints assembly generated by the compiler for given VI file
  • Transform Metrics
  • UDClass Info
  • Full OMUDClassPtr List
  • Available Implementers

DS Fields

Data Space in an important concept in LV internals. In short, Data Space contains filling for all type mapped data types. Be sure to read more on Data Space to understand it better.

The DS Fields section contains some general information on Data Space of the file, and then displays whole mapping of the Data Space (DSTM). As of LV2014 it doesn’t show values stored in data space, but it shows offsets within said Data Space, and Type Map Entries (TMEs) with information about which data type is stored there, with all its properties. The DSTM data in this section is cut to only show part of Data Space which is used for different purposes than Heap - the complete Data Space is always larger.

Toolbar

The toolbar consists of several fields.

  • Next/prev buttons
  • Currently selected item name text
  • U button
  • F button - Click on it to find the object selected in Heap View. LabVIEW will switch to the block diagram or front panel and select related object.
  • uo button - Toggles between sorting the list on the right by UID (the default) or by memory address.

Note: A previous author said that few developers really know the capacities of heap peek. This is true… it’s a debugging tool, and it gets hacked up to debug whatever anyone needs to debug.

Ned options

Ned, the friendly configuration manager is a debug feature of LabVIEW in form of a window with list of options. The private, internal set of settings available on that list allow changing various aspects of LabVIEW inner mechanisms.

These settings are not saved across LabVIEW sessions, but many of the options are also valid LabVIEW configuration file keys.

Enabling Ned Options

Like Heap Peek, Ned Options keyboard shortcut is by default disabled in fresh installations of LabVIEW. To enable it:

Then, to trigger the Ned Options window:

  • Open your VI
  • Press CTRL+SHIFT+D+N. On Mac, use the command key instead of CTRL. This will open the Ned Options window.

Using Ned Options

Clicking once on a option will switch it, cycling through two or more values.

Heap storage format

Front Panel and Block Diagram of a VI file are internally called Heaps. Across versions of LabVIEW, several storage formats were used for these heaps.

The format used in currently opened VI file can be selected in Ned options. The format used in new VI files depends on the version of LabVIEW.

Note: Changing the Heap Storage format in Ned may cause your VI to no longer open! Make sure to experiment on scrap copies of files.

Binary format 1

Used in first versions of LabVIEW. Has Resource ID of FPHP and BDHP.

Binary format 2

First update of the format, prepared to handle separation of Type Descriptors from heap data. Has Resource ID of FPHb and BDHb.

Binary format 3

After this update, all data stored within heap was separated from the main heap tree, dividing heap into two blocks: structure and data. Has Resource ID of FPHc and BDHc.

Verbose Tagged Text

A text based format, created to be easily readable by humans. Has Resource ID of FPHT and BDHT.

XML format

Since the structure of the heap fits XML format perfectly, would be a sin not to add such option. Has Resource ID of FPHX and BDHX.


This information above taken from LabVIEW Wiki.