如何呼叫另一個視窗呢?

請問如何呼叫另一個視窗並在結束後關閉?

我用"Suspend when called"設定要另外出現的視窗(VI),

但動作結束後仍停留在畫面上,要如何讓它消失呢?

謝謝

請試試看,使用「sub vi node setup」,然後把「Show Front Panel when called、Close afterwards if originally closed」打勾,看看這樣可不可以。

 

不行喔,這個方法我昨天有試過

請看我想呼叫的視窗,按下按鈕就停止,但不會消失

A_VI.vi

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)
希望不會讓你混亂。

Airbolt38539.9273148148

謝謝 Airbolt & Ben大

"Quit LabVIEW.vi" 我用過了,但會把主視窗也一起關掉了

Air大提到的設定我也都設過,但子視窗仍然會停在畫面上

我只是要主視窗去呼叫子視窗執行一些動作後

子視窗就消失,控制權回到主視窗

是否有其他方法可達成呢?

上面講的都沒有錯咧…

按照上面的方式做,子視窗執行完後,就會自動關閉阿,

控制權就會回到主視窗阿…



你要不要附上你的程式或是再試試看…

你可以參考一下這個範例程式。
因為我需要更多的設定,
所以我進到每個 VI 的 VI Properties 去做設定。

 

Demo-GUI Action.llb

 

圖一:

Main VI:

![](upload://e5QyHn29i4cVNv9r2t25VVapgPa.jpeg)

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

 

設定1:VI Propertyes -> Window Appearance -> Custmize ->

![](upload://2PpO70MDEcO40uGBvs7XUahNo8D.jpeg)

設定1_紅框1:讓 GUI 不出現一些程式中用不到的功能,
                            => 讓畫面整潔,避免操作者混淆。

設定1_紅框2:(在 Sub VI 才有需要這麼設定)
                            在 該 VI 被呼叫到時,顯示出 畫面,
                            並在該 VI 結束執行時,關閉 畫面。

設定1_紅框3:在 GUI 可以顯示在最上層,
                           而不被其它任何程式畫面蓋住,
                           => 避免操作者找不到目前程式主要作用視窗。

設定1_紅框4:讓 GUI 出現時,出現位置在螢幕的正中央。
                           => 讓操作者第一眼就能找到主要作用畫面。

 

設定2:VI Propertyes -> Execution ->

設定2_紅框5:讓 VI 被開啟時,便自動執行之。

 

圖二:

Sub VI:

 

設定1:VI Propertyes -> Window Appearance -> Custmize ->
               (同 Main VI 的 設定 1)

設定2:VI Propertyes -> Execution ->
               (不做改變)

Airbolt38540.5334259259

終於可以了,謝謝各位努力為我解答!