Tree控件的使用
圖 17 Edit Tree Items方法
假如需要給圖 18左側(cè)的Tree控件增加一個(gè)結(jié)點(diǎn),使之變成右側(cè)的Tree控件,則可以使用Edit Tree Items. Add Item方法。
圖 18 增加一個(gè)結(jié)點(diǎn)(Item項(xiàng))
圖 19所示為增加結(jié)點(diǎn)的源代碼,其中Parent Tag為B,表示B是待插入項(xiàng)的父結(jié)點(diǎn),如果待插入結(jié)點(diǎn)沒有父結(jié)點(diǎn)則設(shè)置為空就可以了。Child Position表示待插入項(xiàng)是第幾個(gè)子項(xiàng),很明顯應(yīng)該填入1。Left Cell String是待插入項(xiàng)第1列的字符串。Child Text是一個(gè)數(shù)組,表示待插入項(xiàng)第2列之后的所有字符串。Child Tag是待插入項(xiàng)的Tag值,不能設(shè)置為空或者與其它的Tag值相同。
圖 19 增加一個(gè)結(jié)點(diǎn)(Item項(xiàng))源代碼
1.4.4自定義Tree結(jié)點(diǎn)的符號(hào)本文引用地址:http://m.butianyuan.cn/article/201701/337511.htm
在Custom Item Symbols方法中,可以動(dòng)態(tài)設(shè)置或者自定義結(jié)點(diǎn)的符號(hào)。如前面所述,LabVIEW共提供了42種內(nèi)置的符號(hào),每一個(gè)符號(hào)從上之下從左至右有一個(gè)唯一的Index號(hào)(從0開始)。
如果需要給圖 18中新加入的F結(jié)點(diǎn)增加一個(gè)自定義的符號(hào),可以使用圖 20所示的代碼。首先使用屬性結(jié)點(diǎn),將F結(jié)點(diǎn)的符號(hào)設(shè)置為1號(hào)符號(hào)(符號(hào)的Index可以在右鍵快捷菜單的Item Symbol菜單項(xiàng)中查詢);然后使用Custom Item Symbol. Set Symbol方法,將1號(hào)符號(hào)修改為自定義的圖片;這樣就Tree控件中所有的1號(hào)符號(hào)會(huì)變?yōu)樾碌姆?hào)。
圖 20 自定義結(jié)點(diǎn)的符號(hào)
1.5Tree控件的界面刷新
本例將介紹一個(gè)特殊的技巧,不僅僅使用在Tree控件中,也可以使用在其它的界面更新中。本例將實(shí)現(xiàn)如圖 21所示的功能,使用程序自動(dòng)向Tree控件加入1000個(gè)結(jié)點(diǎn),并且每個(gè)結(jié)點(diǎn)的底色依次交叉不同。
圖 21 Tree控件例子前面板
底層代碼【下載】如圖 22所示。首先使用Edit Tree Items. Delete方法刪除Tree控件中所有的內(nèi)容(不連接Tag表示刪除所有內(nèi)容);然后加入一個(gè)N=1000的For循環(huán),每次循環(huán)都加入一個(gè)新的Item項(xiàng)并且設(shè)置該項(xiàng)的背景色。Child Positon設(shè)置為-1表示新加入的項(xiàng)在現(xiàn)有項(xiàng)的最末尾處。
圖 22 Tree控件例子背面板
運(yùn)行該VI,可以發(fā)現(xiàn)程序確實(shí)能夠?qū)崿F(xiàn)相應(yīng)的功能,但是運(yùn)行時(shí)間較長(zhǎng)。這主要是由于Tree控件刷新導(dǎo)致的,每次循環(huán)運(yùn)行,都需要修改結(jié)點(diǎn)的背景色,這使得整個(gè)界面的刷新速度非常慢。事實(shí)上,我們并不需要觀察Tree控件增加的過程,只需要快速地獲取到結(jié)果就可以了。例如在循環(huán)運(yùn)行時(shí),可以并不馬上改變Tree控件的外觀,而是程序運(yùn)行完成后,一次性地刷新Tree控件的外觀,這樣可以大大地提高程序運(yùn)行的速度。修改后的代碼如圖 23所示。
圖 23 Tree控件例子背面板_修改后
上圖中使用了LabVIEW提供的Defer Panel Updates屬性,該屬性可以延遲整個(gè)界面(Panel)的刷新。也就是說當(dāng)修改界面上控件的值和外觀時(shí),并不是馬上對(duì)界面上的控件進(jìn)行刷新,而是在恰當(dāng)?shù)臅r(shí)候(當(dāng)LabVIEW重繪前面板界面的時(shí)候)再統(tǒng)一進(jìn)行刷新。因此,在開始運(yùn)行時(shí)將Defer Panel Updates屬性設(shè)置為true,在程序結(jié)束后再將Defer Panel Updates屬性設(shè)置為false強(qiáng)制對(duì)前面板控件進(jìn)行刷新。
評(píng)論