下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、TreeView使用筆記TreeView由節(jié)點(diǎn)構(gòu)成,建樹通過對TreeView.items屬性進(jìn)行操作。Items是一個TTreeNodes對象,這是一個TTreeNode集。一、針對TTreeNodes,也就是TreeView.items,有這些屬性:1、count,節(jié)點(diǎn)個數(shù)。2、itemindex,通過index得到節(jié)點(diǎn)。二、針對TTreeNodes,也就是TreeView.items,常用的添加節(jié)點(diǎn)的操作有:AddFirst添加第一個根節(jié)點(diǎn)。由此函數(shù)添加的節(jié)點(diǎn)總排在前面,除非后來又使用此函數(shù)添加了一個節(jié)點(diǎn),則后添加的節(jié)點(diǎn)將排在前面。該函數(shù)返回新添加的節(jié)點(diǎn)。AddChildFirst添加第
2、一個子節(jié)點(diǎn),要求有父節(jié)點(diǎn)作為其參數(shù)。返回新添加的節(jié)點(diǎn)。AddChild添加一個子節(jié)點(diǎn),要求有父節(jié)點(diǎn)作為其參數(shù)。返回新添加的節(jié)點(diǎn)。Add添加一個兄弟節(jié)點(diǎn),要求有兄弟節(jié)點(diǎn)作為其參數(shù)。返回新添加的節(jié)點(diǎn)。三、針對TTreeNodes,也就是TreeView.Items,常用的得到節(jié)點(diǎn)的操作有:GetFirstNode()得到根節(jié)點(diǎn)。然后配合TTreeNode.GetNext(),就可以訪問所有的節(jié)點(diǎn)。四、建樹舉例:varroot_node,cur_node:TTreeNode;beginroot_node:=AddFirst(nil,根節(jié)點(diǎn)1);cur_node:=addChildfirst(root
3、_node,nil,根節(jié)點(diǎn)1_child1);add(cur_node,根節(jié)點(diǎn)1_child2);root_node:=Add(nil,根節(jié)點(diǎn)2);AddChildFirst(root_node,根節(jié)點(diǎn)2_child1);end;五、事件觸發(fā):當(dāng)從一個節(jié)點(diǎn)跳到另一個節(jié)點(diǎn),會觸發(fā)TTreeView.OnChange事件。該事件中,將傳遞node,即當(dāng)前被選中的節(jié)點(diǎn)。當(dāng)修改一個節(jié)點(diǎn)的text時,會觸發(fā)TTreeView.onEdit事件。六、將節(jié)點(diǎn)和節(jié)點(diǎn)所對應(yīng)的數(shù)據(jù)聯(lián)系起來對于每個TTreeNode,有個Data屬性,可以存放一個指針。我們可以利用這個域來存放與節(jié)點(diǎn)對應(yīng)的自己的數(shù)據(jù)。我們先定義一個
4、數(shù)據(jù)結(jié)構(gòu),作為記錄我們要記錄的數(shù)據(jù)。如:typePMyData=ATMyData;TMyData=RecordsFName:string;sLName:String;nIndex:integer;end;然后,創(chuàng)建數(shù)時,將節(jié)點(diǎn)和節(jié)點(diǎn)數(shù)據(jù)聯(lián)系起來:procedureTForm1.Button1Click(Sender:TObject);varmyshuju:PMyDatacur_node:TTreeNode;beginNew(myshuju);/記住,一定要先分配內(nèi)存。有幾個節(jié)點(diǎn),就要分配幾次內(nèi)存。myshujuFName:=Edit1.Text;MyshujuA.LName:=Edit2.Te
5、xt;TreeViewIndex:=StrToInt(Edit3.Text);withTreeView1dobegincur_node:=items.AddFirst(nil,first);cur_node.data:=myshuju;end;end;當(dāng)我們選中一個節(jié)點(diǎn)時,就可以使用我們的數(shù)據(jù)了。procedureTForm1.TreeView1Change(Sender:TObject;Node:TTreeNode);beginifnode.datanilthenself.label1.caption:=pmyData(node.data)A.Fname+pmyData(node.data)
6、A.Lnameend;內(nèi)存釋放procedureTForm1.ListView1Deletion(Sender:TObject;Item:TListItem);beginDispose(Item.Data);end;七、一般使用流程:1、添加全局變量:b_first:boolean;/記錄是否是第一次訪問節(jié)點(diǎn),因為此時數(shù)據(jù)還未準(zhǔn)備好,而一旦訪問節(jié)點(diǎn)就會觸發(fā)OnChange事件,在此事件處理函數(shù)中也許會出錯。2、在FormCreate中,a、設(shè)置b_first:=true;創(chuàng)建數(shù)并將節(jié)點(diǎn)與數(shù)據(jù)聯(lián)系。3、在FormShow中設(shè)置b_first:=false;4.在事件OnChange中處理節(jié)點(diǎn)被選
7、中事件。5.在Edit中處理節(jié)點(diǎn)被修改Text事件。并調(diào)用OnChange.6.在TreeView.Destory中釋放Data中指向的內(nèi)存空間。另一篇相關(guān)介紹:每一個節(jié)點(diǎn)下子節(jié)點(diǎn)形成這一節(jié)點(diǎn)的Items屬性,當(dāng)前節(jié)點(diǎn)有一個唯一的Index(TreeNode的Index屬性),用于說明子節(jié)點(diǎn)在Items中的位置,每一個節(jié)點(diǎn)下的子節(jié)點(diǎn)是順序編號的,第一個是0,第二個是1,依次類推。用IndexOf方法獲得子節(jié)點(diǎn)的順序,絕對順序(Absoluteindex)則是指從Treeview第一個項開始的順序值,第一個是0,如此推下去。Item屬性則根據(jù)Index的值返回當(dāng)前節(jié)點(diǎn)的第Index個子節(jié)點(diǎn)。Co
8、unt則表明屬于此項的所有子節(jié)點(diǎn)的數(shù)量。用MoveTo方法將Item由一個位置移到另一個位置。Expanded屬性表明是否所有的子項都全部展開(包括子項的子項),為True表示全部展開。IsVisible屬性表明一個項是否在樹中能被看到,如果樹全部展開那么這個Item是肯定可以被看到HasChildren屬性表明一個項是否有子項。GetFirstChild,GetLastChild,GetPrevChild,andGetNextChild分別返回當(dāng)前項子項的第一個、最后一個和前一個、后一個項。GetNextSiblingandGetPrevSibling則返回在同一Level下的下一個和上一個
9、項。GetNextVisibleandGetPrevVisible則返回能看得到的下一個和上一個項。如果一個節(jié)點(diǎn)有Parent,則HasAsParent方法返回True.Parent為當(dāng)前項的父項。Focused屬性確定焦點(diǎn)是否落在此節(jié)點(diǎn)上,被Focus時會一個標(biāo)準(zhǔn)的方框圍住。很顯然,只有一個節(jié)點(diǎn)會被聚焦。Selected屬性表明一個節(jié)點(diǎn)是否被選中,同樣只有一個節(jié)點(diǎn)會被選中。DropTarget屬性表明節(jié)點(diǎn)在拖動操作中是源還是目標(biāo)。.1.添加、刪除、修改節(jié)點(diǎn):靜態(tài)的方法可以在設(shè)計時通過Items的編輯器設(shè)置各節(jié)點(diǎn)的內(nèi)容。在添加和刪除前必須保證有節(jié)點(diǎn)被選中(Treeview.Selected=n
10、il)用AddFirst,AddFirstChild,AddChild等先添加根節(jié)點(diǎn),如Treeview.Items.AddFirst(nil,Root);然后以此為基礎(chǔ),添加此項的子節(jié)點(diǎn)。刪除節(jié)點(diǎn)Treeview.Selected.Delete編輯節(jié)點(diǎn)內(nèi)容Treeview.Selected.EditText注意:由于根節(jié)點(diǎn)沒有父節(jié)點(diǎn)(TTreeNode.Parent=nil)此外,在大批量添加數(shù)據(jù)到Treeview中時最好使用TreeView.Items.BeginUpdate;添加節(jié)點(diǎn)TreeView.Items.EndUpdate這樣能加快顯示速度。2.在節(jié)點(diǎn)上添加圖象Treeview中幾個與圖象相關(guān)的屬性:Selectedlndex:當(dāng)節(jié)點(diǎn)被選中時在TimageList中選什么樣的圖象Overlayindex:選那副圖象作為掩圖(一幅圖象透明地顯示在另一幅圖象的前面),比如一個節(jié)點(diǎn)不可用時加一副X圖象在其前面。Imageindex:在常態(tài)時選用的圖的序號StateIndex:在Statelmages這個ImageList中對應(yīng)的序號,-1時不顯示圖象比較典型的,象在文件管理器中的所顯示的一樣,Treeview控
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年設(shè)備借款擔(dān)保合同
- 設(shè)備進(jìn)場驗收登記制度(4篇)
- 范進(jìn)中舉課本劇
- 2025賓館公共區(qū)域綠化養(yǎng)護(hù)與美化合同3篇
- 2024年設(shè)計服務(wù)外包合同范本版B版
- 2024養(yǎng)老院老年文化娛樂活動合作協(xié)議3篇
- 2024版:某科技公司與某政府部門之間關(guān)于智慧城市建設(shè)技術(shù)服務(wù)的合同
- 2024年軟件知識產(chǎn)權(quán)許可與全球市場拓展協(xié)議2篇
- 麗水學(xué)院《中西醫(yī)結(jié)合實(shí)驗診斷研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南有色金屬職業(yè)技術(shù)學(xué)院《外科》2023-2024學(xué)年第一學(xué)期期末試卷
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 2024年手術(shù)室?guī)Ы坦ぷ饔媱潣颖荆?篇)
- 一年級數(shù)學(xué)(上)計算題專項練習(xí)匯編
- 保安服務(wù)招投標(biāo)書范本(兩篇)2024
- 遼寧省沈陽市五校協(xié)作體2024-2025學(xué)年高二上學(xué)期11月期中考試語文試題(含答案)
- 算法分析與設(shè)計學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 保密知識培訓(xùn)
- 2024醫(yī)療器械質(zhì)量管理制度
- 江西省穩(wěn)派教育2025屆數(shù)學(xué)高二上期末教學(xué)質(zhì)量檢測模擬試題含解析
- 八年級歷史上冊(部編版)第六單元中華民族的抗日戰(zhàn)爭(大單元教學(xué)設(shè)計)
評論
0/150
提交評論