国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

TreeView使用筆記

2019-11-18 18:41:13
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
 

TreeView使用筆記

TreeView由節(jié)點(diǎn)構(gòu)成,建樹(shù)通過(guò)對(duì)TreeView.items屬性進(jìn)行操作。Items是一個(gè)TTreeNodes對(duì)象,這是一個(gè)TTreeNode集。

一、針對(duì)TTreeNodes,也就是 TreeView.Items,有這些屬性:
1、count,節(jié)點(diǎn)個(gè)數(shù)。
2、item[index]  ,通過(guò)index得到節(jié)點(diǎn)。

二、針對(duì)TTreeNodes,也就是 TreeView.Items,常用的添加節(jié)點(diǎn)的操作有:
AddFirst添加第一個(gè)根節(jié)點(diǎn)。由此函數(shù)添加的節(jié)點(diǎn)總排在前面,除非后來(lái)又使用此函數(shù)添加了一個(gè)節(jié)點(diǎn),則后添加的節(jié)點(diǎn)將排在前面。該函數(shù)返回新添加的節(jié)點(diǎn)。
AddChildFirst添加第一個(gè)子節(jié)點(diǎn),要求有父節(jié)點(diǎn)作為其參數(shù)。返回新添加的節(jié)點(diǎn)。
AddChild添加一個(gè)子節(jié)點(diǎn),要求有父節(jié)點(diǎn)作為其參數(shù)。返回新添加的節(jié)點(diǎn)。
Add添加一個(gè)兄弟節(jié)點(diǎn),要求有兄弟節(jié)點(diǎn)作為其參數(shù)。返回新添加的節(jié)點(diǎn)。

三、針對(duì)TTreeNodes,也就是 TreeView.Items,常用的得到節(jié)點(diǎn)的操作有:
GetFirstNode() 得到根節(jié)點(diǎn)。
然后配合TTreeNode.GetNext(),就可以訪問(wèn)所有的節(jié)點(diǎn)。

四、建樹(shù)舉例:

var
  root_node,cur_node:TTreeNode;
begin
  root_node:=AddFirst(nil,'根節(jié)點(diǎn)1');
  cur_node:=addChildfirst(root_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)從一個(gè)節(jié)點(diǎn)跳到另一個(gè)節(jié)點(diǎn),會(huì)觸發(fā)TTreeView.OnChange事件。該事件中,將傳遞node,即當(dāng)前被選中的節(jié)點(diǎn)。

當(dāng)修改一個(gè)節(jié)點(diǎn)的text時(shí),會(huì)觸發(fā)TTreeView.onEdit事件。


六、將節(jié)點(diǎn)和節(jié)點(diǎn)所對(duì)應(yīng)的數(shù)據(jù)聯(lián)系起來(lái)
對(duì)于每個(gè)TTreeNode,有個(gè)Data屬性,可以存放一個(gè)指針。我們可以利用這個(gè)域來(lái)存放與節(jié)點(diǎn)對(duì)應(yīng)的自己的數(shù)據(jù)。
1.我們先定義一個(gè)數(shù)據(jù)結(jié)構(gòu),作為記錄我們要記錄的數(shù)據(jù)。如:
type
  PMyData=^TMyData;
  TMyData=Record
    sFName:string;
    sLName:String;
    nIndex:integer;
  end;

2.然后,創(chuàng)建數(shù)時(shí),將節(jié)點(diǎn)和節(jié)點(diǎn)數(shù)據(jù)聯(lián)系起來(lái):
PRocedure TForm1.Button1Click(Sender: TObject);
var
  myshuju: PMyData
  cur_node:TTreeNode;
begin
  New(MyRecPtr);  //記住,一定要先分配內(nèi)存。有幾個(gè)節(jié)點(diǎn),就要分配幾次內(nèi)存。
  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.當(dāng)我們選中一個(gè)節(jié)點(diǎn)時(shí),就可以使用我們的數(shù)據(jù)了。
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;  //記錄是否是第一次訪問(wèn)節(jié)點(diǎn),因?yàn)榇藭r(shí)數(shù)據(jù)還未準(zhǔn)備好,而一旦訪問(wèn)節(jié)點(diǎn)就會(huì)觸發(fā)OnChange事件,在此事件處理函數(shù)中也許會(huì)出錯(cuò)。
2、在FormCreate中,
  a、設(shè)置b_first:=true;
  b. 創(chuàng)建數(shù)并將節(jié)點(diǎn)與數(shù)據(jù)聯(lián)系。
3、在FormShow中
  設(shè)置b_first:=false;
4.在事件OnChange中處理節(jié)點(diǎn)被選中事件。
5.在Edit中處理節(jié)點(diǎn)被修改Text事件。
  并調(diào)用OnChange.
6.在 TreeView.Destory中
  釋放Data 中指向的內(nèi)存空間。


上一篇:用mediaplay實(shí)現(xiàn)抓圖

下一篇:算術(shù)編碼算法

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 利辛县| 东莞市| 凌云县| 方山县| 西畴县| 阿勒泰市| 苏尼特左旗| 肇州县| 图们市| 通州市| 辉南县| 西乡县| 平湖市| 丹江口市| 灯塔市| 贺州市| 红原县| 徐州市| 扎囊县| 万全县| 如东县| 巴东县| 留坝县| 合肥市| 永年县| 北辰区| 彭水| 太原市| 青铜峡市| 米脂县| 弥勒县| 涟水县| 定西市| 东莞市| 财经| 宜兴市| 大宁县| 翼城县| 建德市| 页游| 皋兰县|