六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

TreeView使用筆記

[摘要]TreeView使用筆記 TreeView由節點構成,建樹通過對TreeView.items屬性進行操作。Items是一個TTreeNodes對象,這是一個TTreeNode集。 一、針對TTreeNodes,也就是 TreeView.Items,有這些屬性: 1、count,節點個數。 2、it...

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.然后,創建數時,將節點和節點數據聯系起來:

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;


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

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 中指向的內存空間。

 




主站蜘蛛池模板: 在线观看午夜视频 | 欧美综合图区 | 亚洲高清综合 | 亚洲宅男天堂a在线 | 在线播放侵犯高傲女教师希崎 | 天天夜天天干 | 中文国产成人精品久久一 | 啪啪网站视频 | 日韩欧美一区二区在线观看 | 中文字幕精品一区影音先锋 | 亚洲第6页 | 亚洲精品91大神在线观看 | 欧美综合一区 | 天天综合天天看夜夜添狠狠玩 | 无人区国产大片 | 四虎国内精品一区二区 | 中文天堂 | 日本vs欧美一区二区三区 | 在线九色| 亚洲欧洲日本在线观看 | 日韩欧美国内 | 日韩 欧美 中文 亚洲 高清 在线 | 日韩城人网 | 天堂在线最新版www中文 | 欧美一二三 | 中文字幕欧美在线观看 | 午夜tv| 四虎影院永久免费观看 | 最近2019中文字幕大全视频一页 | 四虎国产一区二区三区 | 亚洲精品在线第一页 | 伊人亚洲综合网成人 | 色噜噜狠狠大色综合 | 午夜精品久久久久久久99热下载 | 天天摸日日摸人人看 | 宇都宫紫苑(rion)在线播放 | 日日噜噜夜夜狠狠视频欧美人 | 日本不卡视频 | 综合88| 手机在线观看伦理片 | 在线免费观看a视频 |