




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、VBTreeView控件使用詳解(2012-06-16 15:08:16)轉(zhuǎn)載標(biāo)簽:it分類:VB編程筆記第一小時:學(xué)習(xí)直接用代碼將數(shù)據(jù)填充到樹控件中。為什么要先學(xué)習(xí)直接用代碼將數(shù)據(jù)填充到樹控件中?因為這種方法是最簡單的,代碼也最容易理解,學(xué)習(xí)樹控件,先將這個學(xué)會,已經(jīng)掌握了一半,所以先不要急著想怎么將表中的數(shù)據(jù)填充到樹控件中,在第一小時里,樹控件和表完全沒有關(guān)系。目的:我們要在樹控件中建立如下的一個3層級關(guān)系水果|_蘋果| |_紅富士| |_國光|_葡萄|_紅提子|_青提子解釋:水果包含2種,一種是蘋果,一種是葡萄,蘋果又包含2種,一種是紅富士,一種是國光,葡萄也如此。在這里:“爺”是水果,
2、“父”是蘋果,葡萄,“子”是紅富士,國光,紅提子,青提子。概括如下:爺(只能有一個):水果父(這里有2個):父1:蘋果;父2:葡萄子(這里有4個):子1:紅富士(父1蘋果的子);子2:國光(父1蘋果的子);子3:紅提子(父2葡萄的子);子4:青提子(父2葡萄的子)1、新建一個窗體,在窗體上放置兩個控件,一個是Treeview,一個是Imagelist如何找到這兩個控件?Treeview控件在“工具箱”的榔頭加扳手圖標(biāo)(其他控件)中選“Microsoft Treeview Control,Version 6.0Imagelist控件在“工具箱”的榔頭加扳手圖標(biāo)(其他控件)中選“Microsoft
3、 Imagelist Control,Version 6.0Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?原來這個控件是放圖標(biāo)用的,如果你想在樹控件中顯示圖標(biāo)的,這個圖標(biāo)都將儲存在ImageList控件中。2、設(shè)置這兩個控件的屬性首先要講清楚控件的屬性設(shè)置有2種,一種是設(shè)置這個控件在ACCESS中的屬性,比如名稱等。一種是設(shè)置這個控件本身的屬性。要設(shè)置這個控件在ACCESS中的屬性,選中控件后按鼠標(biāo)右鍵選“屬性”就可以了。跟我們平時設(shè)置文本框什么的一樣。要設(shè)置這個控件本身的屬性,只要雙擊這個控件就可以了。1)設(shè)置Treeview控件在ACCESS中的名稱屬性,將
4、名稱設(shè)置為“Treeview2)設(shè)置Imagelist控件在ACCESS中的名稱屬性,將名稱設(shè)置為“Image2)設(shè)置Imagelist控件本身的屬性,雙擊控件后,在彈出來的設(shè)置框中選“Images,單擊“Insert Picture按鈕,在你電腦中選擇你需要的圖標(biāo)。在“Key:”欄中填入“K1”。其他默認設(shè)置不用改。3)設(shè)置Treeview控件本身的屬性,雙擊控件后,在彈出來的設(shè)置框中選“General”,在這個選項面版中有很多項設(shè)置,大多數(shù)是設(shè)置樹控件的顯示格式,你自己慢慢研究。這里我們將第一項“Style選7,在第五項“Imagelist選項中將我們放置的Imagelist控件“Imag
5、e選上。這項設(shè)置就將圖標(biāo)和樹控件聯(lián)系了起來。3、寫代碼將數(shù)據(jù)填充到樹控件中代碼寫在哪里?我們希望窗體一打開,數(shù)據(jù)就自動填充在樹控件中,所以這個代碼就寫在窗體的加載事件中,代碼及解釋如下:VBScript code復(fù)制代碼Private Sub Form_Load()* -*用代碼將數(shù)據(jù)填充到樹控件中* -Dim Nodeindex As Node*-*解釋:定義Node*Node是樹控件的對象*每個Node都有三個東西,圖標(biāo),文本,索引值*圖標(biāo)和文本都是實際顯示出來的,索引值是隱含的*-設(shè)置最頂級的“爺”:* -Set Nodeindex = TreeView.Nodes.Add(, , 爺,
6、 水果, K1)Nodeindex.Sorted = True*-*樹控件填充數(shù)據(jù)的方法是Nodes.Add*括號內(nèi)是Add方法的參數(shù)*在這里“爺”是索引值,“水果”是將顯示的文本,“K1”是圖標(biāo)的索引值*Sorted是指Node的排序,True就是指采用排序,默認是按拼音*第一,二個參數(shù)是空的*具體的參數(shù)設(shè)置以后你可以慢慢詳細研究*-設(shè)置第二級“父”* -Set Nodeindex = TreeView.Nodes.Add(爺, tvwChild, 父1, 蘋果, K1)Nodeindex.Sorted = TrueSet Nodeindex = TreeView.Nodes.Add(爺,
7、tvwChild, 父2, 葡萄, K1)Nodeindex.Sorted = True*-*第一個參數(shù)“爺”是指這一層對應(yīng)上層“爺”的*tvwChild參數(shù)是規(guī)定格式,指相對來說,這一層是爺?shù)淖訉?“父1”是索引值,因為“父”有2個,而索引值是唯一的,所以要編號,用“父1”“父2”分開*“蘋果”“葡萄”是要顯示的文本,K1是顯示圖標(biāo)的索引值*現(xiàn)在知道為什么在“爺”層設(shè)置時,第一,第二個參數(shù)是空的,因為這是最頂層*-設(shè)置第三級“子”* -Set Nodeindex = TreeView.Nodes.Add(父1, tvwChild, 子1, 紅富士, K1)Nodeindex.Sorted =
8、 TrueSet Nodeindex = TreeView.Nodes.Add(父1, tvwChild, 子2, 國光, K1)Nodeindex.Sorted = TrueSet Nodeindex = TreeView.Nodes.Add(父2, tvwChild, 子3, 紅提子, K1)Nodeindex.Sorted = TrueSet Nodeindex = TreeView.Nodes.Add(父2, tvwChild, 子4, 青提子, K1)Nodeindex.Sorted = True*-*第一個參數(shù)“父1,2”是指這一層對應(yīng)上層“父”的,但要注意對應(yīng)的是“父1”還是“父
9、2”*tvwChild參數(shù)是規(guī)定格式,指相對來說,這一層是父的子層*“子1”是索引值,因為“子”有4個,而索引值是唯一的,所以要編號,用“1,2,3,4”分開*“紅富士”等是要顯示的文本,K1是顯示圖標(biāo)的索引值*-End Sub就這么多代碼,總共十幾行,就可以在樹控件中顯示數(shù)據(jù)了,很簡單吧。第一小時結(jié)束。第二小時:學(xué)習(xí)怎樣將樹控件和數(shù)據(jù)庫中的數(shù)據(jù)綁起來在第一小時里,我們學(xué)習(xí)了怎樣直接用代碼填充樹控件,但在實際使用中,這種方法的應(yīng)用性不大,只有將樹控件與數(shù)據(jù)庫中的數(shù)據(jù)結(jié)合起來,才能有真正的應(yīng)用。其實綁定數(shù)據(jù)庫的方法和直接用代碼填充是大同小異的,我們要做的只是將Add的參數(shù)里,原來我們手工輸入的變
10、換一下,讓程序知道去數(shù)據(jù)庫中找數(shù)據(jù)。目的:將數(shù)據(jù)庫中的數(shù)據(jù)與樹控件綁定背景:我們想在樹控件中顯示銷售客戶的層級列表,這個銷售客戶的分層是這樣的,先按“大區(qū)”,再按“省份”,最后到“客戶”我們在數(shù)據(jù)庫中建立了三個表,字段如下:大區(qū)表:大區(qū)ID,大區(qū)名稱省份表:省份ID,省份名稱,所屬大區(qū)客戶表:客戶ID,客戶名稱,所屬省份這三個表互相建立了關(guān)系1、新建一個窗體,在窗體上放置兩個控件,一個是Treeview,一個是Imagelist2、設(shè)置這兩個控件的屬性在這里和第一小時唯一的區(qū)別是我們在Imagelist控件的設(shè)置時,導(dǎo)入了兩個圖標(biāo),一個KEY為K1,一個為K2,原來樹控件的Node圖標(biāo)是可以變
11、化的,我們準(zhǔn)備某個項沒有選中時的圖標(biāo)是一個沒有打開的文件夾,選中時是一個打開的文件夾,以區(qū)別。3、編寫代碼,如下:VBScript code復(fù)制代碼Private Sub Form_Load()* -* 用數(shù)據(jù)庫表(查詢也一樣)中數(shù)據(jù)填充樹控件* -Dim Rec As New ADODB.RecordsetDim stRecQL As StringDim Item As IntegerDim i As IntegerDim nodindex As Node* -* 定義各類* -設(shè)置最頂級的爺* -Set nodindex = TreeView.Nodes.Add(, , 爺, 銷售客戶,
12、K1, K2)nodindex.Sorted = True* -*這里的設(shè)置跟第一小時里基本是一樣的*但最后多了一個K2的參數(shù),K1代表的是未被選中時的圖標(biāo),K2代表是被選中后的圖標(biāo)*仔細觀察一下,你會發(fā)現(xiàn)選中和沒選中的圖標(biāo)是不一樣的,一個是一個文件夾,一個是一個打開的文件夾* -設(shè)置第二級父* -Rec.Open 大區(qū)表, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1Set nodindex = TreeView.Nodes
13、.Add(爺, tvwChild, 父 & Rec.Fields(大區(qū)ID), Rec.Fields(大區(qū)名稱), K1, K2)nodindex.Sorted = TrueRec.MoveNextNextRec.Close* -*第一行意思是打開一個表去尋找數(shù)據(jù)(查詢也是可以的)*關(guān)鍵在與Add參數(shù)的變化*大家看第三個參數(shù),在第一小時里,這里是父1,這里用Rec.Fields(大區(qū)ID)來代替1,意思是用表的編號來代替手工編號*第四個參數(shù)也是一樣,直接用表中的名稱字段來取代原來我們手工的命名* -設(shè)置第三級子* -Rec.Open 省份表, CurrentProject.Connection
14、, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1Set nodindex = TreeView.Nodes.Add(父 & Rec.Fields(所屬大區(qū)), tvwChild, 子 & Rec.Fields(省份ID), Rec.Fields(省份名稱), K1, K2)nodindex.Sorted = TrueRec.MoveNextNextRec.Close* -*不用再解釋了吧*要注意的是,定義第一個參數(shù)的時候,不是用父 & Rec.Fields(大區(qū)ID),而是用父
15、& Rec.Fields(所屬大區(qū))*這個意思是:用省份表中關(guān)聯(lián)大區(qū)表的字段,而不是直接用大區(qū)表的ID* -設(shè)置第四級孫* -Rec.Open 客戶表, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1Set nodindex = TreeView.Nodes.Add(子 & Rec.Fields(所屬省份), tvwChild, 孫 & Rec.Fields(客戶ID), Rec.Fields(客戶名稱), K1, K2)nod
16、index.Sorted = TrueRec.MoveNextNextRec.Close* -*到此你應(yīng)該完全明白了* -End Sub第二小時結(jié)束第三小時:將樹控件與窗體結(jié)合我們做樹控件,當(dāng)然不可能單單為了顯示層級數(shù)據(jù),我們希望跟窗體結(jié)合,當(dāng)我們單擊樹控件中的某個客戶時,窗體上能相應(yīng)的轉(zhuǎn)到這個客戶的資料。目的:將樹控件與窗體結(jié)合1、我們還是沿用第二個小時里的例子,但在建立窗體時,將窗體的數(shù)據(jù)來源設(shè)為“客戶表”,并在窗體中放置好客戶表的字段。2、寫入如下代碼:VBScript code復(fù)制代碼Private Sub Treeview_NodeClick(ByVal Node As Object)* -*樹控件的鼠標(biāo)點擊事件為NodeClick* -Dim str As String* -*定義一個篩選* -If Node.Text = 銷售客戶 Or Node.Key Like 父* Or Node.Key Like 子* Thenstr = * -*在第一小時里,我們說了Node有三個東西,圖標(biāo),文本,索引值*文本就是text,索引值就是Key這里將就是說當(dāng)我們點擊爺,父或子層的時候,不篩選窗體*這個條件也可寫成:If Node.ke
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借錢擔(dān)保合同范本
- 廠區(qū)電線維修合同范本
- 付費攝影合同范本
- 中醫(yī)工作計劃
- 個體戶減稅申請書
- 個人能力提升計劃書
- 1+X糧農(nóng)證書模擬考試題與答案
- 農(nóng)村老舊木材收購合同范本
- 二手車出售合同范本
- 動物防疫模擬考試題與參考答案
- 銷售合同模板英文銷售合同模板
- 大學(xué)計算機基礎(chǔ)(Windows10+Office2016)PPT完整全套教學(xué)課件
- 精素材:描寫植物的好詞好句好段
- 【高中語文】《登岳陽樓》課件17張+統(tǒng)編版高中語文必修下冊
- 華師大版八年級數(shù)學(xué)下冊全冊教案
- 四下語文學(xué)情分析-2
- 家園合作培養(yǎng)幼兒勞動行為習(xí)慣的行動研究
- 中國的能源安全 課件
- 鄭州市某路雨水污水改造工程施工組織設(shè)計
- 對口升學(xué)計算機組裝試卷答案
- 期末總結(jié)600字四篇
評論
0/150
提交評論