TreeView控件應用詳解
出處:網(wǎng)絡
treeView控件是在VFP的數(shù)據(jù)處理中很有用的一個ActiveX 控件,但是VFP的幫助中卻沒有相關的說明,為幫助大家對這一控件有一個詳細的了解,,現(xiàn)將TreeView控件應用詳解如下:
一,、概述
TreeView控件顯示Node對象的分層列表,每個Node對象均由一個標簽和一個可選的位圖組成,。TreeView 一般用于顯示文檔標題,、索引入口、磁盤上的文件和目錄,、或能被有效地分層顯示的其它種類信息,。創(chuàng)建了TreeView控件之后,可以通過設置屬性與調(diào)用方法對各Node對象進行操作,,這些操作包括添加,、刪除、對齊和其它操作,??梢跃幊陶归_與折回 Node 對象來顯示或隱藏所有子節(jié)點。Collapse,、Expand和NodeClick三個事件也提供編程功能,。
Node對象使用Root、Parent,、Child,、FirstSibling、Next、Previous和 LastSibling屬性,。在代碼中可通過檢索對Node對象的引用,,從而在樹上定位。也可以使用鍵盤定位,。UP ARROW鍵和DOWN ARROW鍵向下循環(huán)穿過所有展開的Node對象,。從左到右、從上到下地選擇Node對象,。若在樹的底部,,選擇便跳回樹的頂部,必要時滾動窗口,。RIGHT ARROW鍵和LEFT ARROW鍵也穿過所有展開的Node對象,,但是如果選擇了未展開的 Node之后再按RIGHT ARROW鍵,該Node便展開,;第二次按該鍵,,選擇將移向下一個Node。相反,,若擴展的Node有焦點,,這時再按LEFT ARROW鍵,該Node便折回,。如果按下ANSI字符集中的鍵,,焦點將跳轉(zhuǎn)至以那個字母開頭的最近的Node。后續(xù)的按該鍵的動作將使選擇向下循環(huán),,穿過以那個字母開頭的所有展開節(jié)點,。
控件的外觀有八種可用的替換樣式,它們是文本,、位圖,、直線和+/-號的組合,Node 對象可以任一種組合出現(xiàn),。
TreeView控件使用由ImageList屬性指定的ImageList控件,,來存儲顯示于Node對象的位圖和圖標。任何時刻,,TreeView 控件只能使用一個ImageList,。這意味著,當 TreeView控件的Style屬性被設置成顯示圖象的樣式時,,TreeView控件中每一項的旁邊都有一個同樣大小的圖象,。
發(fā)行注意TreeView控件是COMCTL32.OCX文件中的一組ActiveX控件的一部分。為了在應用程序中使用TreeView控件,,必須將COMCTL32.OCX文件添加到工程中,。在發(fā)行應用程序時,,要在用戶的Microsoft Windows System或System32目錄中安裝COMCTL32.OCX文件。
二,、常用屬性
1、Nodes屬性返回對TreeView控件的Node對象的集合的引用,。
語法:object.Nodes
ject所在處代表一個對象表達式,,其值是“應用于”列表中的一個對象。
說明:可以使用標準的集合方法(例如:Add和Remove方法)操作Node對象,??梢园雌渌饕虼鎯υ贙ey屬性中的唯一鍵來訪問集合中的每個元素。
2,、Style屬性返回或設置圖形類型(圖象,、文本、+/-號,、直線)以及出現(xiàn)在 TreeView 控件中每一Node對象上的文本的類型,。
語法:object.Style [ = number]
Style 語法包含下面部分:
部分 |
描述 |
object |
對象表達式,其值是“應用于”列表中的一個對象,。 |
number |
指定圖形類型的整數(shù),,請參閱“設置值”中的描述。 |
設置值
number 的設置值是:
設置值 |
描述 |
0 |
僅為文本,。 |
1 |
圖象和文本,。 |
2 |
+/- 號和文本。 |
3 |
+/- 號,,圖象和文本,。 |
4 |
直線和文本。 |
5 |
直線,,圖象和文本,。 |
6 |
直線,+/- 號和文本,。 |
7 |
(缺?。┲本€,+/- 號,,圖象和文本,。 |
說明:若Style屬性設置為包含直線的值,則LineStyle屬性就確定了直線的外觀,。如果Style屬性設置為不含直線的值,,則LineStyle屬性將被忽略。
3,、Sorted屬性返回或設置一值,,此值確定Node對象的子節(jié)點是否按字母順序排列,;返回或設置一值,此值確定TreeView控件的根層節(jié)點是否按字母順序排列,。
語法:object.Sorted [ = boolean]
Sorted屬性語法包含下面部分:
部分 |
描述 |
object |
對象表達式,,其值是“應用于”列表中的一個對象。 |
boolean |
布爾表達式,,表示 Node 對象是否已被排序如“設置值”中描述,。 |
boolean的設置值是:
設置值 |
描述 |
True |
Node 對象根據(jù)它們的 Text 屬性按字母順序排列。其 Text 屬性由數(shù)字開始的 Node 對象也作為字符串排序,,第一個數(shù)字確定在排序中的初始位置,,后面的數(shù)字確定以后的排序。 |
False |
Node 對象不排序,。 |
說明:Sorted屬性有兩種用法,,第一,在TreeView控件的根(頂)層排列Node對象,,第二,,對任何單個Node對象的立即子節(jié)點排序。
例如,,下面的代碼是對TreeView控件的根節(jié)點排序:
TreeView1.Sorted = True 頂層Node對象被排序,。
下面的例子表示創(chuàng)建Node對象時如何設置Sorted屬性:
Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(,,,"Parent Node")
nodX.Sorted = True
設置 Sorted 屬性為True僅對當前Nodes集合排序。在TreeView控件中添加新的Node對象時,,必須再次設置 Sorted 屬性為 True,,以便對添加的 Node 對象排列。
三,、常用方法
1,、Add 方法在Treeview控件的Nodes集合中添加一個Node對象。
語法:
object.Add(relative, relationship, key, text, image, selectedimage)
Add 方法的語法包含下面部分:
部分 |
描述 |
object |
必需的,。對象表達式,,其值是“應用于”列表中的一個對象 |
relative |
可選的。已存在的 Node 對象的索引號或鍵值,。新節(jié)點與已存在的節(jié)點間的關系,,可在下一個參數(shù) relationship 中找到。 |
relationship |
可選的,。指定的 Node 對象的相對位置,,如設置值中所述。 |
key |
可選的,。唯一的字符串,,可用于用 Item 方法檢索 Node。 |
text |
必需的,。在 Node 中出現(xiàn)的字符串,。 |
image |
可選的,。在關聯(lián)的 ImageList 控件中的圖象的索引。 |
selectedimage |
可選的,。在關聯(lián)的 ImageList 控件中的圖象的索引,,在 Node 被選中時顯示。 |
設置值
relationship 的設置值是:
常數(shù) |
值 |
描述 |
tvwFirst |
0 |
首的節(jié)點,。該 Node 和在 relative 中被命名的節(jié)點位于同一層,,并 位于所有同層節(jié)點之前。 |
tvwLast |
1 |
最后的節(jié)點,。該 Node 和在 relative 中被命名的節(jié)點位于同一層,并 位于所有同層節(jié)點之后,。任何連續(xù)地添加的節(jié)點可能位于最后添加的節(jié)點之后 |
tvwNext |
2 |
(缺?。┫乱粋€節(jié)點。該 Node 位于在 relative 中被命名的節(jié)點之后,。 |
tvwPrevious |
3 |
前一個節(jié)點,。該 Node 位于在 relative 中被命名的節(jié)點之前。 |
tvwChild |
4 |
(缺?。┳庸?jié)點,。該 Node 成為在 relative 中被命名的節(jié)點的子節(jié)點。 |
注意:如果在relative中沒有被命名的Node對象,,則新節(jié)點被放在節(jié)點頂層的最后位置,。
說明:Nodes 集合是一個基于 1 的集合。在添加Node對象時,,它被指派一個索引號,,該索引號被存儲在Node對象的Index屬性中。這個最新成員的Index屬性值就是Node集合的Count屬性的值,。因為Add方法返回對新建立的Node對象的引用,,所以使用這個引用來設置新Node的屬性十分方便。
2,、GetVisibleCount方法返回固定在 TreeView 控件的內(nèi)部區(qū)域的 Node 對象的個數(shù),。
語法:object.GetVisibleCount
object 所在處代表一個對象表達式,其值是“應用于”列表中的一個對象,。
說明: Node 對象的個數(shù)取決于在一個窗口中能固定多少行,。總的行數(shù)取決于控件的高度和 Font 對象的 Size 屬性,。該計數(shù)包括列表底部的只能看到一局部的項,。可以使用 GetVisibleCount 屬性確??梢暤淖钚⌒袛?shù),,這樣可以精確地訪問一個層,。如果最小行數(shù)是不可視的,可以用Height屬性重新設置TreeView的大小,。
四,、常用事件
NodeClick事件在一個Node對象被單擊時,這個事件便發(fā)生,。
語法:Private Sub object_NodeClick(ByVal node As Node)
NodeClick事件的語法包含下面部分:
部分 |
描述 |
object |
對象表達式,,其值是“應用于”列表中的一個對象。 |
node |
對被點取的 Node 對象的引用,。 |
說明:在單擊節(jié)點對象之外的TreeView控件的任何部位,,標準的Click事件發(fā)生。當單擊某個特定的Node對象時,,NodeClick事件發(fā)生,;NodeClick事件也返回對特定的Node對象的引用,在下一步操作之前,,這個引用可用來使這個Node對象可用,。 NodeClick事件發(fā)生在標準的Click事件之前。