最近的一個小project需要對前面板的物件做大量操控, 花了點時間搞懂一些東西
前面板(front panel)可以看作是視窗的外殼,上面有一個pane, 大概類似其他引擎的canvas
labview可以藉由splitter在視窗分隔出一個以上的pane來
pane裡面放置的物件分為三個group:AllObjs, Decorations和Controls
這裡的controls包含control和indicator
大概是panel-->pane-->Objects (controls+decocations) 這樣
所以控制前面板物件要到pane裡抓出要控制物件的ref, 再從裡面的方法和屬性去控制
==========================================
20200615補充
從以下程式可以看出三種group的不同, 以及Reference的順序關係
AllObjs因為包含不同group所以可已控制的property少很多
==========================================
作法有兩種
如果是要subVI要控制上層VI的物件要從front panel (FP)拉出ref control
(是的,下層VI可以控制上層面板的物件)
只是要控制本身面板物件就到block diagram (BD)拉
在FP按右鍵找到Refnum, 把裡面的VI Refnum control拉到FP
當然, 如果你要控制的是上層control也可以選Control Refnum
在control按右鍵重新選擇Ref的種類為Pane
在BD建立則是選擇application crontrol裡的VI server refnum, 然後在icon按右鍵重新連結到pane
這邊可以看到pane底下列出了所有的control (但沒有decoration)
所以也可以把refnum直接設定成要控制的control
從Pane裡回傳的物件Ref順序是會變的, 他的排列依據是物件或裝飾在pane上的位置
在最上層的一個物件會在index 0的位置, 往下就類推, 一旦改變前後順序ref順序也會變
比如說想要把某個裝飾或物件放到最下一層,把他的refnum移到array最後面就可以了
從下面這個程式就可以看出這個現象