Tree控件的使用

圖 6 Edit Tree Items對話框
1.2Tree控件對應的事件本文引用地址:http://www.104case.com/article/201701/337511.htm
在背面板上放置一個事件結構,并且選擇Tree控件,可以看到其對應的所有事件,如圖 7所示。本節只介紹一些特殊的Tree事件。
圖 7 Tree控件的事件
- Edit Cell事件
該事件與multicolum listbox中的Edit Cell事件一樣,當用戶編輯控件中的內容時被觸發。分為Edit Cell消息型事件和Edit Cell?過濾型事件,后者可以根據程序員的設計取消掉該事件。
如程序運行時只允許用戶修改Tree控件第1列的值,而不允許修改其他列的值。可以使用Edit Cell?過濾型事件實現該功能,具體如圖 8所示。要允許用戶在程序運行時編輯Tree控件的值需要首先勾選Tree控件右鍵快捷菜單中的Editable Cells菜單項,然后運行該程序,在需要修改的單元格中單擊并輸入響應的字符。可以看出除了修改第1列的值以外,對其它列的修改都不會成功。
也可以把本例延伸一下,比如只允許用戶輸入特定的字符串(大寫字母,數字等),應該如何處理呢?
圖 8 Tree控件的Edit Cell?過濾型事件
- Double Click事件
從名稱可以看出,該事件在用戶雙擊Tree控件時被觸發,如圖 9所示。圖中事件數據節點中的Tag表示用戶雙擊了哪一行,但是是否有一種方式明確了用戶到底雙擊了Tree控件中的哪一個區域呢,具體為哪一行哪一列呢?顯然左側的Coords表示雙擊的坐標值,我們可以通過Tree控件的“Point To Row Column”方法(Create→Invoke Node)將Coords坐標值轉化為具體的行和列值。此外,如何表示用戶雙擊了Tree控件的行頭和列頭呢?具體可以參考LabVIEW中關于“Point To Row Column”方法的幫助文檔。
圖 9 Tree控件的Double Click過濾型事件
- Item Close和Item Open事件
這兩個事件是對立的,分別具有一個消息型事件和一個過濾型事件。它們是在用戶展開或收縮某一個父層次項時被觸發的,如上述Tree控件中的第2行,當展開或收縮該行時會觸發該事件(可以通過單擊該行左側的“+”和“—”符號或者雙擊該行實現展開和收縮操作)。
如果不希望用戶收縮Tree控件的第2行,可以使用如圖 10所示的代碼。運行該VI,可以看出,無論用戶如何單擊Tree控件第2行左側的“—”符號,都不會收縮該行。
圖 10 Tree控件的Item Close過濾型事件
1.3Tree控件對應的屬性
Tree控件的屬性眾多,如圖 11所示,主要是為了動態地改變Tree控件的屬性(利用程序修改)。絕大部分的屬性與multicolum listbox類似,本節只介紹幾個典型的屬性節點,重在說明Tree屬性節點的使用方法。
評論