Tree控件的使用

圖 17 Edit Tree Items方法
假如需要給圖 18左側(cè)的Tree控件增加一個結(jié)點,使之變成右側(cè)的Tree控件,則可以使用Edit Tree Items. Add Item方法。

圖 18 增加一個結(jié)點(Item項)
圖 19所示為增加結(jié)點的源代碼,其中Parent Tag為B,表示B是待插入項的父結(jié)點,如果待插入結(jié)點沒有父結(jié)點則設置為空就可以了。Child Position表示待插入項是第幾個子項,很明顯應該填入1。Left Cell String是待插入項第1列的字符串。Child Text是一個數(shù)組,表示待插入項第2列之后的所有字符串。Child Tag是待插入項的Tag值,不能設置為空或者與其它的Tag值相同。

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