TreeView使用筆記
1、count,節點個數。 2、item[index] ,通過index得到節點。
AddFirst添加第一個根節點。由此函數添加的節點總排在前面,除非后來又使用此函數添加了一個節點,則后添加的節點將排在前面。該函數返回新添加的節點。 AddChildFirst添加第一個子節點,要求有父節點作為其參數。返回新添加的節點。 AddChild添加一個子節點,要求有父節點作為其參數。返回新添加的節點。 Add添加一個兄弟節點,要求有兄弟節點作為其參數。返回新添加的節點。
GetFirstNode() 得到根節點。 然后配合TTreeNode.GetNext(),就可以訪問所有的節點。
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,即當前被選中的節點。
六、將節點和節點所對應的數據聯系起來 對于每個TTreeNode,有個Data屬性,可以存放一個指針。我們可以利用這個域來存放與節點對應的自己的數據。 1.我們先定義一個數據結構,作為記錄我們要記錄的數據。如: type PMyData=^TMyData; TMyData=Record sFName:string; sLName:String; nIndex:integer; end;
procedure TForm1.Button1Click(Sender: TObject); var myshuju: PMyData cur_node:TTreeNode; begin New(MyRecPtr); //記住,一定要先分配內存。有幾個節點,就要分配幾次內存。 myshuju^.FName:=Edit1.Text; Myshuju^.LName := Edit2.Text; TreeViewIndex := StrToInt(Edit3.Text); with TreeView1 do begin cur_node:=items.AddFirst(nil,'first'); cur_node.data:=myshuju; end; end;
procedure TForm1.TreeView1Change(Sender:TObject;Node:TTreeNode); begin if node.data<>nil then 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 中指向的內存空間。
|
溫馨提示:喜歡本站的話,請收藏一下本站!