vb treeview 控件_第1頁
vb treeview 控件_第2頁
vb treeview 控件_第3頁
vb treeview 控件_第4頁
vb treeview 控件_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、TreeView概述TreeView 控件顯示 Node 對(duì)象的分層列表,每個(gè) Node 對(duì)象均由一個(gè)標(biāo)簽和一個(gè)可選的位圖組成。TreeView 一般用于顯示文檔標(biāo)題、索引入口、磁盤上的文件和目錄、或能被有效地分層顯示的其它種類信息。創(chuàng)建了 TreeView 控件之后,可以通過設(shè)置屬性與調(diào)用方法對(duì)各 Node 對(duì)象進(jìn)行操作,這些操作包括添加、刪除、對(duì)齊和其它操作??梢跃幊陶归_與折回 Node 對(duì)象來顯示或隱藏所有子節(jié)點(diǎn)。Collapse、Expand 和 NodeClick 三個(gè)事件也提供編程功能。Node 對(duì)象使用 Root、Parent、Child、FirstSibling、Next、Pr

2、evious 和 LastSibling 屬性。在代碼中可通過檢索對(duì) Node 對(duì)象的引用,從而在樹上定位。也可以使用鍵盤定位。UP ARROW 鍵和 DOWN ARROW 鍵向下循環(huán)穿過所有展開的 Node 對(duì)象。從左到右、從上到下地選擇 Node 對(duì)象。若在樹的底部,選擇便跳回樹的頂部,必要時(shí)滾動(dòng)窗口。RIGHT ARROW 鍵和 LEFT ARROW 鍵也穿過所有展開的 Node 對(duì)象,但是如果選擇了未展開的 Node之后再按 RIGHT ARROW 鍵,該 Node 便展開;第二次按該鍵,選擇將移向下一個(gè) Node。相反,若擴(kuò)展的 Node 有焦點(diǎn),這時(shí)再按 LEFT ARROW 鍵,

3、該 Node 便折回。如果按下 ANSI 字符集 中的鍵,焦點(diǎn)將跳轉(zhuǎn)至以那個(gè)字母開頭的最近的 Node。后續(xù)的按該鍵的動(dòng)作將使選擇向下循環(huán),穿過以那個(gè)字母開頭的所有展開節(jié)點(diǎn)。 控件的外觀有八種可用的替換樣式,它們是文本、位圖、直線和 +/- 號(hào)的組合,Node 對(duì)象可以任一種組合出現(xiàn)。 TreeView 控件使用由 ImageList 屬性指定的 ImageList 控件,來存儲(chǔ)顯示于 Node 對(duì)象的位圖和圖標(biāo)。任何時(shí)刻,TreeView 控件只能使用一個(gè) ImageList。這意味著,當(dāng) TreeView 控件的 Style 屬性被設(shè)置成顯示圖象的樣式時(shí),TreeView 控件中每一項(xiàng)的旁

4、邊都有一個(gè)同樣大小的圖象。 發(fā)行注意 TreeView 控件是 COMCTL32.OCX 文件中的一組 ActiveX 控件的一部分。為了在應(yīng)用程序中使用 TreeView 控件,必須將 COMCTL32.OCX 文件添加到工程中。在發(fā)行應(yīng)用程序時(shí),要在用戶的 Microsoft Windows System 或 System32 目錄中安裝 COMCTL32.OCX 文件。 屬性DropHighlight屬性(ListView, TreeView控件), Indentation屬性, LabelEdit屬性, LineStyle屬性, Nodes屬性, PathSeparator屬性(Tre

5、eView控件), SelectedItem屬性(ActiveX控件), Sorted屬性(TreeView控件), Style屬性(TreeView控件), Checkboxes屬性, FullRowSelect屬性, Scroll屬性, SingleSel屬性, HotTracking屬性, TabIndex屬性, Tag屬性, Visible屬性, DragIcon屬性, DragMode屬性, CausesValidation屬性, MouseIcon屬性, TabStop屬性, HelpContextID屬性, Name屬性, Parent屬性, Container屬性, ToolT

6、ipText屬性, WhatsThisHelpID屬性, OLEDragMode屬性(ActiveX控件), OLEDropMode屬性(ActiveX控件), Height , Width屬性(ActiveX控件), Index屬性(ActiveX控件), Left, Top屬性(ActiveX控件), Object屬性(ActiveX控件), Appearance屬性(ActiveX控件), BorderStyle屬性(ActiveX控件), Enable屬性(ActiveX控件), Font屬性(ActiveX控件), HideSelection屬性(ActiveX控件), hWnd屬性

7、(ActiveX控件), MousePointer屬性(ActiveX控件), ImageList屬性(ActiveX控件)。 方法GetVisibleCount方法, HitTest方法(ListView, TreeView控件), StartLabelEdit方法, SetFocus方法, Drag方法, Move方法, ZOrder方法, ShowWhatsThis方法, OLEDrag方法(ActiveX控件), Refresh方法(ActiveX控件)。 - 常用屬性1、Nodes屬性返回對(duì)TreeView控件的Node對(duì)象的集合的引用。 語法:object.Nodes ? ject

8、所在處代表一個(gè)對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。 說明:可以使用標(biāo)準(zhǔn)的集合方法(例如:Add和Remove方法)操作Node對(duì)象??梢园雌渌饕虼鎯?chǔ)在Key屬性中的唯一鍵來訪問集合中的每個(gè)元素。 2、Style屬性返回或設(shè)置圖形類型(圖象、文本、+/-號(hào)、直線)以及出現(xiàn)在 TreeView 控件中每一Node對(duì)象上的文本的類型。 語法:object.Style = number Style 語法包含下面部分: 部分描述object對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。number指定圖形類型的整數(shù),請(qǐng)參閱“設(shè)置值”中的描述。設(shè)置值 number 的設(shè)置值是: 設(shè)置值描述0僅

9、為文本。1圖象和文本。2+/- 號(hào)和文本。3+/- 號(hào),圖象和文本。4直線和文本。5直線,圖象和文本。6直線,+/- 號(hào)和文本。7(缺省)直線,+/- 號(hào),圖象和文本。說明:若Style屬性設(shè)置為包含直線的值,則LineStyle屬性就確定了直線的外觀。如果Style屬性設(shè)置為不含直線的值,則LineStyle屬性將被忽略。 3、Sorted屬性返回或設(shè)置一值,此值確定Node對(duì)象的子節(jié)點(diǎn)是否按字母順序排列;返回或設(shè)置一值,此值確定TreeView控件的根層節(jié)點(diǎn)是否按字母順序排列。 語法:object.Sorted = boolean Sorted屬性語法包含下面部分: 部分描述object對(duì)

10、象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。boolean布爾表達(dá)式,表示 Node 對(duì)象是否已被排序如“設(shè)置值”中描述。boolean的設(shè)置值是: 設(shè)置值描述TrueNode 對(duì)象根據(jù)它們的 Text 屬性按字母順序排列。其 Text 屬性由數(shù)字開始的 Node 對(duì)象也作為字符串排序,第一個(gè)數(shù)字確定在排序中的初始位置,后面的數(shù)字確定以后的排序。FalseNode 對(duì)象不排序。說明:Sorted屬性有兩種用法,第一,在TreeView控件的根(頂)層排列Node對(duì)象,第二,對(duì)任何單個(gè)Node對(duì)象的立即子節(jié)點(diǎn)排序。 例如,下面的代碼是對(duì)TreeView控件的根節(jié)點(diǎn)排序: TreeView1.So

11、rted = True 頂層Node對(duì)象被排序。 下面的例子表示創(chuàng)建Node對(duì)象時(shí)如何設(shè)置Sorted屬性: Dim nodX As Node Set nodX = TreeView1.Nodes.Add(,"Parent Node") nodX.Sorted = True 設(shè)置 Sorted 屬性為True僅對(duì)當(dāng)前Nodes集合排序。在TreeView控件中添加新的Node對(duì)象時(shí),必須再次設(shè)置 Sorted 屬性為 True,以便對(duì)添加的 Node 對(duì)象排列。 常用方法1、Add 方法在Treeview控件的Nodes集合中添加一個(gè)Node對(duì)象。 語法: object.A

12、dd(relative, relationship, key, text, image, selectedimage) Add 方法的語法包含下面部分: 部分描述object必需的。對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象relative可選的。已存在的 Node 對(duì)象的索引號(hào)或鍵值。新節(jié)點(diǎn)與已存在的節(jié)點(diǎn)間的關(guān)系,可在下一個(gè)參數(shù) relationship 中找到。relationship可選的。指定的 Node 對(duì)象的相對(duì)位置,如設(shè)置值中所述。key可選的。唯一的字符串,可用于用 Item 方法檢索 Node。text必需的。在 Node 中出現(xiàn)的字符串。image可選的。在關(guān)聯(lián)的 Ima

13、geList 控件中的圖象的索引。selectedimage可選的。在關(guān)聯(lián)的 ImageList 控件中的圖象的索引,在 Node 被選中時(shí)顯示。設(shè)置值 relationship 的設(shè)置值是: 常數(shù)值描述tvwFirst0首的節(jié)點(diǎn)。該 Node 和在 relative 中被命名的節(jié)點(diǎn)位于同一層,并 位于所有同層節(jié)點(diǎn)之前。tvwLast1最后的節(jié)點(diǎn)。該 Node 和在 relative 中被命名的節(jié)點(diǎn)位于同一層,并 位于所有同層節(jié)點(diǎn)之后。任何連續(xù)地添加的節(jié)點(diǎn)可能位于最后添加的節(jié)點(diǎn)之后tvwNext2(缺省)下一個(gè)節(jié)點(diǎn)。該 Node 位于在 relative 中被命名的節(jié)點(diǎn)之后。tvwPrevio

14、us3前一個(gè)節(jié)點(diǎn)。該 Node 位于在 relative 中被命名的節(jié)點(diǎn)之前。tvwChild4(缺?。┳庸?jié)點(diǎn)。該 Node 成為在 relative 中被命名的節(jié)點(diǎn)的子節(jié)點(diǎn)。注意:如果在relative中沒有被命名的Node對(duì)象,則新節(jié)點(diǎn)被放在節(jié)點(diǎn)頂層的最后位置。 說明:Nodes 集合是一個(gè)基于 1 的集合。在添加Node對(duì)象時(shí),它被指派一個(gè)索引號(hào),該索引號(hào)被存儲(chǔ)在Node對(duì)象的Index屬性中。這個(gè)最新成員的Index屬性值就是Node集合的Count屬性的值。因?yàn)锳dd方法返回對(duì)新建立的Node對(duì)象的引用,所以使用這個(gè)引用來設(shè)置新Node的屬性十分方便。 2、GetVisibleCou

15、nt方法返回固定在 TreeView 控件的內(nèi)部區(qū)域的 Node 對(duì)象的個(gè)數(shù)。 語法:object.GetVisibleCount object 所在處代表一個(gè)對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。 說明: Node 對(duì)象的個(gè)數(shù)取決于在一個(gè)窗口中能固定多少行??偟男袛?shù)取決于控件的高度和 Font 對(duì)象的 Size 屬性。該計(jì)數(shù)包括列表底部的只能看到一局部的項(xiàng)??梢允褂?GetVisibleCount 屬性確??梢暤淖钚⌒袛?shù),這樣可以精確地訪問一個(gè)層。如果最小行數(shù)是不可視的,可以用Height屬性重新設(shè)置TreeView的大小。 常用事件NodeClick 事件在一個(gè) Node 對(duì)象被單

16、擊時(shí),這個(gè)事件便發(fā)生。語法:Private Sub object_NodeClick(ByVal node As Node) NodeClick 事件的語法包含下面部分: 部分 描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。 node 對(duì)被點(diǎn)取的 Node 對(duì)象的引用。 說明: 在單擊節(jié)點(diǎn)對(duì)象之外的 TreeView 控件的任何部位,標(biāo)準(zhǔn)的 Click 事件發(fā)生。當(dāng)單擊某個(gè)特定的 Node 對(duì)象時(shí),NodeClick 事件發(fā)生;NodeClick 事件也返回對(duì)特定的 Node 對(duì)象的引用,在下一步操作之前,這個(gè)引用可用來使這個(gè) Node 對(duì)象可用。 NodeClick 事件

17、發(fā)生在標(biāo)準(zhǔn)的 Click 事件之前。 語法 object.Add(relative, relationship, key, text, image, selectedimage) Add 方法的語法包含下面部分: 部分 描述 object 必需的。對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 relative 可選的。已存在的 Node 對(duì)象的索引號(hào)或鍵值。新節(jié)點(diǎn)與已存在的節(jié)點(diǎn)間的關(guān)系,可在下一個(gè)參數(shù) relationship 中找到。 relationship 可選的。指定的 Node 對(duì)象的相對(duì)位置,如設(shè)置值中所述。 key 可選的。唯一的字符串,可用于用 Item 方法檢索 Node。

18、text 必需的。在 Node 中出現(xiàn)的字符串。 image 可選的。在關(guān)聯(lián)的 ImageList 控件中的圖像的索引。 selectedimage 可選的。在關(guān)聯(lián)的 ImageList 控件中的圖像的索引,在 Node 被選中時(shí)顯示。 設(shè)置值 relationship 的設(shè)置值是: 常數(shù) 值 描述 tvwFirst 0 首的節(jié)點(diǎn)。該 Node 和在 relative 中被命名的節(jié)點(diǎn)位于同一層,并 位于所有同層節(jié)點(diǎn)之前。 tvwLast 1 最后的節(jié)點(diǎn)。該 Node 和在 relative 中被命名的節(jié)點(diǎn)位于同一層,并 位于所有同層節(jié)點(diǎn)之后。任何連續(xù)地添加的節(jié)點(diǎn)可能位于最后添加的節(jié)點(diǎn)之后 tv

19、wNext 2 (缺?。┫乱粋€(gè)節(jié)點(diǎn)。該 Node 位于在 relative 中被命名的節(jié)點(diǎn)之后。 tvwPrevious 3 前一個(gè)節(jié)點(diǎn)。該 Node 位于在 relative 中被命名的節(jié)點(diǎn)之前。 tvwChild 4 (缺?。┳庸?jié)點(diǎn)。該 Node 成為在 relative 中被命名的 節(jié)點(diǎn)的子節(jié)點(diǎn)。 注意 如果在 relative 中沒有被命名的 Node 對(duì)象,則新節(jié)點(diǎn)被放在節(jié)點(diǎn)頂層的最后位置。 說明 Nodes 集合是一個(gè)基于 1 的集合。 在添加 Node 對(duì)象時(shí),它被指派一個(gè)索引號(hào),該索引號(hào)被存儲(chǔ)在 Node 對(duì)象的 Index 屬性中。這個(gè)最新成員的 Index 屬性值就是 No

20、de 集合的 Count 屬性的值。 因?yàn)?Add 方法返回對(duì)新建立的 Node 對(duì)象的引用,所以使用這個(gè)引用來設(shè)置新 Node 的屬性十分方便。以下例子添加幾個(gè)具有相同屬性的 Node 對(duì)象: Dim nodX As Node '聲明對(duì)象變量。 Dim I as Integer '聲明計(jì)數(shù)器變量。 For I = 1 to 4 Set nodX = TreeView1.Nodes.Add(,"Node " & Cstr(i) '使用引用來設(shè)置其它屬性,如 Enabled。 nodX.Enabled = True '把圖像屬性設(shè)置為在

21、關(guān)聯(lián)的 ImageList 中的圖像 3。 nodX.ExpandedImage = 3 Next I理解層級(jí)概念,層級(jí)理論上可以有無限級(jí),一般用到四,五級(jí)也夠用了。最上級(jí)的只能有一個(gè),我們把它叫做“爺”,接下來是“父”,再是“子”,再是“孫”,接下來是“曾孫”.,匯總?cè)缦拢骸盃?,父,子,孫,曾孫”,這里是5級(jí)關(guān)系,除了“爺”只能有一個(gè)外,其余可以有無限個(gè)。記住這些,下面要用。 1學(xué)習(xí)直接用代碼將數(shù)據(jù)填充到樹控件中。為什么要先學(xué)習(xí)直接用代碼將數(shù)據(jù)填充到樹控件中?因?yàn)檫@種方法是最簡(jiǎn)單的,代碼也最容易理解,學(xué)習(xí)樹控件,先將這個(gè)學(xué)會(huì),已經(jīng)掌握了一半,所以先不要急著想怎么將表中的數(shù)據(jù)填充到樹控件中,在

22、第一小時(shí)里,樹控件和表完全沒有關(guān)系。目的:我們要在樹控件中建立如下的一個(gè)3層級(jí)關(guān)系 水果 | |_蘋果 | |_紅富士 | |_國(guó)光 | |_葡萄 |_紅提子 |_青提子 解釋:水果包含2種,一種是蘋果,一種是葡萄,蘋果又包含2種,一種是紅富士,一種是國(guó)光,葡萄也如此。在這里:“爺”是水果,“父”是蘋果,葡萄,“子”是紅富士,國(guó)光,紅提子,青提子。概括如下:爺(只能有一個(gè)):水果父(這里有2個(gè)):父1:蘋果;父2:葡萄子(這里有4個(gè)):子1:紅富士(父1蘋果的子);子2:國(guó)光(父1蘋果的子);子3:紅提子(父2葡萄的子);子4:青提子(父2葡萄的子)下面我們?cè)贏CCESS中栽下這棵樹,步驟如下

23、:1、新建一個(gè)窗體,在窗體上放置兩個(gè)控件,一個(gè)是Treeview,一個(gè)是Imagelist如何找到這兩個(gè)控件?Treeview控件在“工具箱”的榔頭加扳手圖標(biāo)(其他控件)中選“Microsoft Treeview Control,Version 6.0";Imagelist控件在“工具箱”的榔頭加扳手圖標(biāo)(其他控件)中選“Microsoft Imagelist Control,Version 6.0"。Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?原來這個(gè)控件是放圖標(biāo)用的,如果你想在樹控件中顯示圖標(biāo)的,這個(gè)圖標(biāo)都將儲(chǔ)存在ImageList控件

24、中。 2、設(shè)置這兩個(gè)控件的屬性首先要講清楚控件的屬性設(shè)置有2種,一種是設(shè)置這個(gè)控件在ACCESS中的屬性,比如名稱等。一種是設(shè)置這個(gè)控件本身的屬性。要設(shè)置這個(gè)控件在ACCESS中的屬性,選中控件后按鼠標(biāo)右鍵選“屬性”就可以了。跟我們平時(shí)設(shè)置文本框什么的一樣。要設(shè)置這個(gè)控件本身的屬性,只要雙擊這個(gè)控件就可以了。1)設(shè)置Treeview控件在ACCESS中的名稱屬性,將名稱設(shè)置為“Treeview"2)設(shè)置Imagelist控件在ACCESS中的名稱屬性,將名稱設(shè)置為“Image"2)設(shè)置Imagelist控件本身的屬性,雙擊控件后,在彈出來的設(shè)置框中選“Images"

25、;,單擊“Insert Picture"按鈕,在你電腦中選擇你需要的圖標(biāo)。在“Key:”欄中填入“K1”。其他默認(rèn)設(shè)置不用改。3)設(shè)置Treeview控件本身的屬性,雙擊控件后,在彈出來的設(shè)置框中選“General”,在這個(gè)選項(xiàng)面版中有很多項(xiàng)設(shè)置,大多數(shù)是設(shè)置樹控件的顯示格式,你自己慢慢研究。這里我們將第一項(xiàng)“Style"選7,在第五項(xiàng)“Imagelist"選項(xiàng)中將我們放置的Imagelist控件“Image"選上。這項(xiàng)設(shè)置就將圖標(biāo)和樹控件聯(lián)系了起來。 3、寫代碼將數(shù)據(jù)填充到樹控件中代碼寫在哪里?我們希望窗體一打開,數(shù)據(jù)就自動(dòng)填充在樹控件中,所以這個(gè)代碼

26、就寫在窗體的加載事件中,代碼及解釋如下: Private Sub Form_Load()'* -'*用代碼將數(shù)據(jù)填充到樹控件中'* - Dim Nodeindex As Node'*-'*解釋:定義Node'*Node是樹控件的對(duì)象'*每個(gè)Node都有三個(gè)東西,圖標(biāo),文本,索引值'*圖標(biāo)和文本都是實(shí)際顯示出來的,索引值是隱含的'*- '設(shè)置最頂級(jí)的“爺”:'* - Set Nodeindex = TreeView.Nodes.Add(, , "爺", "水果", &q

27、uot;K1") Nodeindex.Sorted = True'*-'*樹控件填充數(shù)據(jù)的方法是Nodes.Add'*括號(hào)內(nèi)是Add方法的參數(shù)'*在這里“爺”是索引值,“水果”是將顯示的文本,“K1”是圖標(biāo)的索引值'*Sorted是指Node的排序,True就是指采用排序,默認(rèn)是按拼音'*第一,二個(gè)參數(shù)是空的'*具體的參數(shù)設(shè)置以后你可以慢慢詳細(xì)研究'*- '設(shè)置第二級(jí)“父”'* - Set Nodeindex = TreeView.Nodes.Add("爺", tvwChild, &q

28、uot;父1", "蘋果", "K1") Nodeindex.Sorted = True Set Nodeindex = TreeView.Nodes.Add("爺", tvwChild, "父2", "葡萄", "K1") Nodeindex.Sorted = True'*-'*第一個(gè)參數(shù)“爺”是指這一層對(duì)應(yīng)上層“爺”的'*tvwChild參數(shù)是規(guī)定格式,指相對(duì)來說,這一層是爺?shù)淖訉?#39;*“父1”是索引值,因?yàn)椤案浮庇?個(gè),而索引值是

29、唯一的,所以要編號(hào),用“父1”“父2”分開'*“蘋果”“葡萄”是要顯示的文本,K1是顯示圖標(biāo)的索引值'*現(xiàn)在知道為什么在“爺”層設(shè)置時(shí),第一,第二個(gè)參數(shù)是空的,因?yàn)檫@是最頂層'*- '設(shè)置第三級(jí)“子”'* - Set Nodeindex = TreeView.Nodes.Add("父1", tvwChild, "子1", "紅富士", "K1") Nodeindex.Sorted = True Set Nodeindex = TreeView.Nodes.Add("

30、父1", tvwChild, "子2", "國(guó)光", "K1") Nodeindex.Sorted = True Set Nodeindex = TreeView.Nodes.Add("父2", tvwChild, "子3", "紅提子", "K1") Nodeindex.Sorted = True Set Nodeindex = TreeView.Nodes.Add("父2", tvwChild, "子4"

31、;, "青提子", "K1") Nodeindex.Sorted = True'*-'*第一個(gè)參數(shù)“父1,2”是指這一層對(duì)應(yīng)上層“父”的,但要注意對(duì)應(yīng)的是“父1”還是“父2”'*tvwChild參數(shù)是規(guī)定格式,指相對(duì)來說,這一層是父的子層'*“子1”是索引值,因?yàn)椤白印庇?個(gè),而索引值是唯一的,所以要編號(hào),用“1,2,3,4”分開'*“紅富士”等是要顯示的文本,K1是顯示圖標(biāo)的索引值,注意K1區(qū)分大小寫。'*-End Sub 就這么多代碼,總共十幾行,就可以在樹控件中顯示數(shù)據(jù)了,很簡(jiǎn)單吧。第一小時(shí)結(jié)束。2學(xué)

32、習(xí)怎樣將樹控件和數(shù)據(jù)庫中的數(shù)據(jù)綁起來在第一小時(shí)里,我們學(xué)習(xí)了怎樣直接用代碼填充樹控件,但在實(shí)際使用中,這種方法的應(yīng)用性不大,只有將樹控件與數(shù)據(jù)庫中的數(shù)據(jù)結(jié)合起來,才能有真正的應(yīng)用。其實(shí)綁定數(shù)據(jù)庫的方法和直接用代碼填充是大同小異的,我們要做的只是將Add的參數(shù)里,原來我們手工輸入的變換一下,讓程序知道去數(shù)據(jù)庫中找數(shù)據(jù)。 目的:將數(shù)據(jù)庫中的數(shù)據(jù)與樹控件綁定背景:我們想在樹控件中顯示銷售客戶的層級(jí)列表,這個(gè)銷售客戶的分層是這樣的,先按“大區(qū)”,再按“省份”,最后到“客戶”我們?cè)跀?shù)據(jù)庫中建立了三個(gè)表,字段如下:大區(qū)表:大區(qū)ID,大區(qū)名稱省份表:省份ID,省份名稱,所屬大區(qū)客戶表:客戶ID,客戶名稱,所

33、屬省份這三個(gè)表互相建立了關(guān)系 1、新建一個(gè)窗體,在窗體上放置兩個(gè)控件,一個(gè)是Treeview,一個(gè)是Imagelist2、設(shè)置這兩個(gè)控件的屬性在這里和第一小時(shí)唯一的區(qū)別是我們?cè)谠O(shè)置Imagelist控件時(shí),導(dǎo)入了兩個(gè)圖標(biāo),一個(gè)KEY為K1,一個(gè)為K2,原來樹控件的Node圖標(biāo)是可以變化的,我們準(zhǔn)備某個(gè)項(xiàng)沒有選中時(shí)的圖標(biāo)是一個(gè)沒有打開的文件夾,選中時(shí)是一個(gè)打開的文件夾,以區(qū)別。3、編寫代碼,如下: Private Sub Form_Load()'* -'* 用數(shù)據(jù)庫表(查詢也一樣)中數(shù)據(jù)填充樹控件'* - Dim Rec As New ADODB.Recordset Di

34、m stRecQL As String Dim Item As Integer Dim i As Integer Dim nodindex As Node'* -'* 定義各類'* - '設(shè)置最頂級(jí)的"爺"'* - Set nodindex = TreeView.Nodes.Add(, , "爺", "銷售客戶", "K1", "K2") nodindex.Sorted = True'* -'*這里的設(shè)置跟第一小時(shí)里基本是一樣的'*

35、但最后多了一個(gè)"K2"的參數(shù),"K1"代表的是未被選中時(shí)的圖標(biāo),"K2"代表是被選中后的圖標(biāo)'*仔細(xì)觀察一下,你會(huì)發(fā)現(xiàn)選中和沒選中的圖標(biāo)是不一樣的,一個(gè)是一個(gè)文件夾,一個(gè)是一個(gè)打開的文件夾'* - '設(shè)置第二級(jí)"父"'* - Rec.Open "大區(qū)表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect For i = 0 To Rec.RecordCount

36、- 1 Set nodindex = TreeView.Nodes.Add("爺", tvwChild, "父" & Rec.Fields("大區(qū)ID"), Rec.Fields("大區(qū)名稱"), "K1", "K2") nodindex.Sorted = True Rec.MoveNext Next Rec.Close'* -'*第一行意思是打開一個(gè)表去尋找數(shù)據(jù)(查詢也是可以的)'*關(guān)鍵在與Add參數(shù)的變化'*大家看第三個(gè)參數(shù),在第一

37、小時(shí)里,這里是"父1",這里用Rec.Fields("大區(qū)ID")來代替"1",意思是用表的編號(hào)來代替手工編號(hào)'*第四個(gè)參數(shù)也是一樣,直接用表中的名稱字段來取代原來我們手工的命名'* - '設(shè)置第三級(jí)"子"'* - Rec.Open "省份表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect For i = 0 To Rec.RecordCount - 1 S

38、et nodindex = TreeView.Nodes.Add("父" & Rec.Fields("所屬大區(qū)"), tvwChild, "子" & Rec.Fields("省份ID"), Rec.Fields("省份名稱"), "K1", "K2") nodindex.Sorted = True Rec.MoveNext Next Rec.Close'* -'*不用再解釋了吧'*要注意的是,定義第一個(gè)參數(shù)的時(shí)候,不是用"父" & Rec.Fields("大區(qū)ID"),而是用"父" & Rec.Fields("所屬大區(qū)")'*這個(gè)意思是:用省份表中關(guān)聯(lián)大區(qū)表的字段,而不是直接用大區(qū)表的ID'* - '設(shè)置第四級(jí)"孫"'* -Rec.Open

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論