TreeView使用筆記

2021-04-29 19:03:16 字數 2361 閱讀 6517

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(),就可以訪問所有的節點。

四、建樹舉例:

varroot_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);

varmyshuju: 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 中指向的記憶體空間。

Vim 使用筆記

set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...

xemacs使用筆記

xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...

awk使用筆記

awk 使用筆記 今天一同事需要將乙個檔案的第 31列和第 32列的數字行替換為 86。因為檔案很大,因此用手工來改顯然不顯示,因此得求助於指令碼工具。雖然我對這些指令碼也不是很精通,但既然答應幫這個忙,就現學現用,完成了這個功能,記錄如下。為了方便記錄我將該檔案簡化一下成下面的格式,檔名為 tes...