[Delphi]TreeView使用筆記_第1頁
[Delphi]TreeView使用筆記_第2頁
[Delphi]TreeView使用筆記_第3頁
[Delphi]TreeView使用筆記_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論