閱讀299 返回首頁    go 阿裏雲 go 技術社區[雲棲]


TreeView使用筆記

TreeView由節點構成,建樹通過對TreeView.items屬性進行操作。Items是一個TTreeNodes對象,這是一個TTreeNode集。

一、針對TTreeNodes,也就是TreeView.Items,有這些屬性:

1、count,節點個數。

2、item[index],通過index得到節點。

二、針對TTreeNodes,也就是TreeView.Items,常用的添加節點的操作有:

AddFirst添加第一個根節點。由此函數添加的節點總排在前麵,除非後來又使用此函數添加了一個節點,則後添加的節點將排在前麵。該函數返回新添加的節點。

AddChildFirst添加第一個子節點,要求有父節點作為其參數。返回新添加的節點。

AddChild添加一個子節點,要求有父節點作為其參數。返回新添加的節點。

Add添加一個兄弟節點,要求有兄弟節點作為其參數。返回新添加的節點。

三、針對TTreeNodes,也就是TreeView.Items,常用的得到節點的操作有:

GetFirstNode()得到根節點。

然後配合TTreeNode.GetNext(),就可以訪問所有的節點。

四、建樹舉例:



var

root_node,cur_node:TTreeNode;

begin

root_node:=AddFirst(nil,'根節點1');

cur_node:=addChildfirst(root_node,nil,'根節點1_child1');

add(cur_node,'根節點1_child2');

root_node:=Add(nil,'根節點2');

AddChildFirst(root_node,''根節點2_child1');

end;

五、事件觸發:

當從一個節點跳到另一個節點,會觸發TTreeView.OnChange事件。該事件中,將傳遞node,即當前被選中的節點。

當修改一個節點的text時,會觸發TTreeView.onEdit事件。

六、將節點和節點所對應的數據聯係起來

對於每個TTreeNode,有個Data屬性,可以存放一個指針。我們可以利用這個域來存放與節點對應的自己的數據。

1.我們先定義一個數據結構,作為記錄我們要記錄的數據。如:


type

PMyData=^TMyData;

TMyData=Record

sFName:string;

sLName:String;

nIndex:integer;

end;

2.然後,創建數時,將節點和節點數據聯係起來:


procedureTForm1.Button1Click(Sender:TObject);

var

myshuju:PMyData

cur_node:TTreeNode;

begin

New(MyRecPtr);//記住,一定要先分配內存。有幾個節點,就要分配幾次內存。

myshuju^.FName:=Edit1.Text;

Myshuju^.LName:=Edit2.Text;

TreeViewIndex:=StrToInt(Edit3.Text);

withTreeView1do

begin

cur_node:=items.AddFirst(nil,'first');

cur_node.data:=myshuju;

end;

end;

3.當我們選中一個節點時,就可以使用我們的數據了。


procedureTForm1.TreeView1Change(Sender:TObject;Node:TTreeNode);

begin

ifnode.data<>nilthen

self.label1.caption:=pmyData(node.data)^.Fname+pmyData(node.data)^.Lname

end;

七、一般使用流程:

1、添加全局變量:


b_first:boolean;//記錄是否是第一次訪問節點,因為此時數據還未準備好,而一旦訪問節點就會觸發OnChange事件,在此事件處理函數中也許會出錯。

2、在FormCreate中,

a、設置b_first:=true;

b.創建數並將節點與數據聯係。

3、在FormShow中

設置b_first:=false;

4.在事件OnChange中處理節點被選中事件。

5.在Edit中處理節點被修改Text事件。

並調用OnChange.

6.在TreeView.Destory中

釋放Data中指向的內存空間。

最後更新:2017-04-02 00:06:33

  上一篇:go 校內網API的.net版本XiaoNei.Net 1.0(非官方)
  下一篇:go ASP.NET ViewState 初探