TreeView利用data屬性存儲相關數據
在Delphi中,TreeView控件是一款很出色並且很經常使用的控件。
在使用過程當中,瞭解到其TTreeNode對象的data屬性存儲相關數據頗有用,通常狀況下,咱們先聲明一個結構體以及其指針,例如:
type
PMyRc = ^TMyRc;
TMyRc = Record
id:string;
name:string;
age:integer;
end;node
添加一個節點,顯示信息爲TMyRc的name,同時存儲id,age。方法以下:
var
p:PMyRc;
i:integer;
begin
Randomize;
for i:= 0 to 9 do
begin
New(p);
p.id:=inttostr(random(100));
p.name:='name'+ inttostr(random(205));
p.age:=random(90);
// Caption := p.id+' '+P.name + ' '+inttostr(p.age);
TreeView1.Items.AddObject(nil,p.name,Tobject(p));
//dispose(p); 若是在這裏釋放指針,id,age並不能存在樹中,而是在這裏就被釋放了。應該在釋放樹的事件裏書寫。
end;
end;dom
釋放樹的事件deletion, 即便是刪除也會執行這些代碼。因此不用擔憂內存泄漏。可是若是不書寫如下代碼,或者用相關的方式釋放內存,一定會形成內存泄漏。
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
dispose(pmyrc(node.data));
end;指針
訪問某個樹枝中的age值:
Pmyrc(TreeView1.Selected.data)^.ageorm