請問如何呼叫另一個視窗並在結束後關閉?
我用"Suspend when called"設定要另外出現的視窗(VI),
但動作結束後仍停留在畫面上,要如何讓它消失呢?
謝謝
請問如何呼叫另一個視窗並在結束後關閉?
我用"Suspend when called"設定要另外出現的視窗(VI),
但動作結束後仍停留在畫面上,要如何讓它消失呢?
謝謝
請試試看,使用「sub vi node setup」,然後把「Show Front Panel when called、Close afterwards if originally closed」打勾,看看這樣可不可以。
Benjamin 所說的這個動作,
主要是在 Main VI 呼叫 Sub VI 時,
所做的動作。
LY_H 是不是有少傳了個 Main VI 呢?
MAIN VI主要的工作僅是把A_VI.vi 放到 block diagram去執行它
在MAIN VI中也要有那些特別的設定嗎?
除了「Show Front Panel when called、Close afterwards if originally closed」以外........
在 LabVIEW 裡頭,
我們常會先把程式碼先打開,
然後再執行。
因為程式碼早就被打開了,
所以當執行完畢後,
LabVIEW 並不會幫你把程式碼給關閉。
這是因為 LabVIEW 所擁有的動態編譯的技術,
讓我們能夠直接來以程式碼來執行之。
如果用下面的想法來看的話,
可能會比較能夠明瞭了:
在 C++ 語言 裡頭,我們寫好一段 code
然後編譯成 執行檔,並執行之。當程式執行完後,
程式並不會把我們的 程式碼 給關閉掉。
如果你需要將程式碼於結束執行時,
給強制關閉的話,
得需要在程式的最後面加上「Quit LabVIEW.vi」 (觀念點1)
通常在程式建立成執行檔時,也常會加入上述的 vi
以讓 GUI 更符合人們的習慣的程式動作反應。
=====================
以上所提及的兩種方式,
使用情況有些不一樣,
要看你的需求而定。
若有不了解的地方,
隨時發文來討論。
=====================
另外你所提到的,
Main VI "本身" 不需要做特別的設定,
只要採取底下的方法 ( 2選1 )
方法1:在 Main VI 裡頭,對 Sub VI 做設定,
(請參考 Benjamin 所提及的) (觀念點2)方法2:在 Sub VI 的
VI Propertyes -> Window Appearance -> Custmize ->
(觀念點3)
這兩個方法的差別是,
方法 1 是讓 Sub VI 只在 Main VI 的程式碼中有做這個設定的地方,
會有所影響 。方法 2 是讓 Sub VI 在所有 有呼叫到 它 的程式碼,都會被影響。
=====================
含 Benjamin 所提的,總共提到了三樣東西
(觀念點1、2、3)
希望不會讓你混亂。
謝謝 Airbolt & Ben大
"Quit LabVIEW.vi" 我用過了,但會把主視窗也一起關掉了
Air大提到的設定我也都設過,但子視窗仍然會停在畫面上
我只是要主視窗去呼叫子視窗執行一些動作後
子視窗就消失,控制權回到主視窗
是否有其他方法可達成呢?
上面講的都沒有錯咧…
按照上面的方式做,子視窗執行完後,就會自動關閉阿,
控制權就會回到主視窗阿…
你要不要附上你的程式或是再試試看…
你可以參考一下這個範例程式。
因為我需要更多的設定,
所以我進到每個 VI 的 VI Properties 去做設定。
圖一:
Main VI:

說明:一般在主程式結束執行前,
加上 「Quit LabVIEW.vi」的動作,
除了讓程式能夠將關閉結束之外,
可以讓 LabVIEW Code 即使不編譯成 執行檔,
也會將程式碼完全關閉結束,
避免操作者去修改到程式碼本身。
設定1:VI Propertyes -> Window Appearance -> Custmize ->

設定1_紅框1:讓 GUI 不出現一些程式中用不到的功能,
=> 讓畫面整潔,避免操作者混淆。設定1_紅框2:(在 Sub VI 才有需要這麼設定)
在 該 VI 被呼叫到時,顯示出 畫面,
並在該 VI 結束執行時,關閉 畫面。設定1_紅框3:在 GUI 可以顯示在最上層,
而不被其它任何程式畫面蓋住,
=> 避免操作者找不到目前程式主要作用視窗。設定1_紅框4:讓 GUI 出現時,出現位置在螢幕的正中央。
=> 讓操作者第一眼就能找到主要作用畫面。
設定2:VI Propertyes -> Execution ->
設定2_紅框5:讓 VI 被開啟時,便自動執行之。
圖二:
Airbolt38540.5334259259Sub VI:
設定1:VI Propertyes -> Window Appearance -> Custmize ->
(同 Main VI 的 設定 1)設定2:VI Propertyes -> Execution ->
(不做改變)
終於可以了,謝謝各位努力為我解答!