LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How to independently enable/disable cluster elements in an array of clusters?

I'm creating a user interface for controlling a thermal chamber. The interface is an array of clusters, with each horizontal cluster (row) being a step in the chamber's program.

I'm having trouble enabling and disabling elements of each array based on the input of the first element (first column) "Step Type" without those changes applying to each cluster/row in the array.

For example, I would like the element of each horizontal cluster called "Ramp Rate (°C/min) to be grayed out if any option other than "Ramp Rate" is selected for that cluster/row.

TestEng01_0-1741378212842.png


I created a reference to the "Ramp Rate (°C/min)" element, but changes applied to that reference affect all of the ramp rate elements in each cluster.

 

Below is my block diagram:

TestEng01_1-1741378607941.png

 

Is there a way to accomplish this type of control? I would like to keep the overall structure as an array if possible, because I would like the user to be able to enter any number of steps needed for a particular profile on the thermal chamber.

 

Thanks for any help that can be given!

 

Regards,
ACM

0 Kudos
Message 1 of 4
(140 Views)

Hi Eng,

 


@TestEng01 wrote:

I created a reference to the "Ramp Rate (°C/min)" element, but changes applied to that reference affect all of the ramp rate elements in each cluster.


Simple rule: in an array ALL elements share the SAME properties.

 


@TestEng01 wrote:

Is there a way to accomplish this type of control? I would like to keep the overall structure as an array if possible, because I would like the user to be able to enter any number of steps needed for a particular profile on the thermal chamber.


Separate the interal data structure (your array of clusters) from the presentation on your UI!

On the UI I would use a (multicolumn) listbox to present the settings. The user can select one row (showing the content of one cluster in your array) and next to the listbox you will show the needed controls to change settings of the selected row. Now those controls a scalars and you can change their properties on your will!

 

Other advantages of my suggestion:

  1. no duplicate labels in each row as you use the header row of the listbox
  2. no cluster borders/gaps inside the array, just thin lines between the listbox rows
  3. items 1 and 2 help to increase the information density by a factor of 2 (I guess) when compared with your array design…
  4. you still can show/hide the vertical scrollbar of the listbox to allow for even more steps…
  5. better aligment of all the values per row, not that slight pixel offset between "step type" and "step time" controls…
  6. you can color the row background or change text properties inside the listbox easily
  7. do you need even more?

Btw. "step time" should be a single control allowing to input HH:MM:SS instead of using 3 independent controls…

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
Message 2 of 4
(127 Views)

I will try the multicolumn listbox, and the different time input method. Thanks for the advice!

Regards,
ACM

0 Kudos
Message 3 of 4
(91 Views)

You either have to make a big cluster that emulates an array (as in this case showing 5 lines), or 5 separate clusters that are placed to emulate an array. Then you have individual control of such properties.

G# - Award winning reference based OOP for LV, for free! - Qestit VIPM GitHub

Qestit Systems
Certified-LabVIEW-Developer
0 Kudos
Message 4 of 4
(37 Views)