From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI產品與技術 討論區

cancel
Showing results for 
Search instead for 
Did you mean: 

LabVIEW内容節點和調用節點的級聯選單如何實現

請問一下,如何實現類内容、方法的級聯調用?類似於控制項的内容、方法清單?如下圖所示系統自帶的内容節點出現的級聯選單:

 XY图的属性的级联菜单XY图的属性的级联菜单

訪問自定義類的内容的時候不出現級聯選單,該如何實現呢?

自定义类属性访问,为何没有级联菜单?自定义类属性访问,为何没有级联菜单?

0 Kudos
Message 1 of 13
(2,933 Views)

屬性分級有點像物件的inheritance,每一個分格線,就相等一個物件的inheritacnce,所以當你要製作屬性的分格線時,要考慮是為了UI為做,還是你的程式有這樣的需求。Snipaste_2018-11-26_09-33-23.png

0 Kudos
Message 2 of 13
(2,899 Views)

就像您的例程,如果类a1中有属性name且定义了读写方法,类b1中有属性age且定义了读写方法,同时类b1中有属性a1,在定义一个类c1,包含属性b1,如果要在类c1中访问a1的属性name,必须要先Read a1,然后再调用a1的Read Name方法获取属性name的值,能否在类c1中直接调用a1的Read Name访问属性name的值呢?如级联菜单那样,

通过级联菜单直接访问属性.png

0 Kudos
Message 3 of 13
(2,895 Views)

如果已經A1定義好的節點,原則在C類inheritance時,就已經一起作用了。如下圖所示

Snipaste_2018-11-26_13-48-15.pngSnipaste_2018-11-26_13-48-15.png

0 Kudos
Message 4 of 13
(2,890 Views)

您的意思我明白,在繼承關係中可以直接訪問父類中定義了訪問方法的内容,但是如果類之間沒有繼承關係呢?

通过级联菜单直接访问属性3.png通过级联菜单直接访问属性2.png

0 Kudos
Message 5 of 13
(2,882 Views)

如果已經沒有繼承關係,那就是直接使用A1物件本身的功能,如果要存取A1的資料,應該就要在C的類這裡寫對應的功能,這裡要算程式設計的範疇。與A1本身的類別並沒有關係,以上是我的觀點。

0 Kudos
Message 6 of 13
(2,875 Views)

当然可以在C中先单独定义访问A的属性name的方法,以后再用A的name时调用这个方法,但这样只是简化的框图,还是要通过两个属性节点才能访问的A的属性name,先获得A的引用再获取name,如果在C中要访问A的10属性或更多,岂不是要额外在C中定义10个访问方法吗?

是不是说自定义的类无法实现像访问控件属性那样的级联菜单呢?

0 Kudos
Message 7 of 13
(2,870 Views)

LabVIEW的控件本身就是物件導向的方式完成的,所以你如果要做成的一樣的方式就只能靠inheritance加上其他手法來完成了。

無法只使用設定的方式達成你要的目的,以上是我的看法。

0 Kudos
Message 8 of 13
(2,865 Views)

繼承後會出現分隔線,這部分如@micro_yang所說的無誤。

至於要做到多階層選單,則需要進行以下設定:

首先設定物件屬性:

a01.png

在Item Settings頁面中可以設定Localized Long Name,在此可以鍵入多階層描述如Menu1:Menu1-1:Item1

在選單中即可產生多層選單:

a02.png

此外設定Localized Short Name

a04.png

則會反映在Property Node的文字上

a03.png

上圖可看到選單中的Property 4選出來會變成Property 444,常用在增強或簡化Property Node上的節點描述使用。

 

選我正解XD!

 

Node Health Tech. Project Manager, Certified LabVIEW Architect.
0 Kudos
Message 9 of 13
(2,849 Views)

@Marco_Yang  已写:

LabVIEW的控件本身就是物件導向的方式完成的,所以你如果要做成的一樣的方式就只能靠inheritance加上其他手法來完成了。

無法只使用設定的方式達成你要的目的,以上是我的看法。


您的意思是繼承控制項類嗎?但是LabVIEW只能繼承Object吧,如何通過繼承來實現級聯選單的管道呢?能否給一個簡單的示例呢?謝謝。

0 Kudos
Message 10 of 13
(2,815 Views)