delphi中TreeView使用常见问题

编程心得

1,在Delphi中,TreeView控件是一款很出色而且很常用的控件。

在使用过程中,了解到其TTreeNode对象的data属性存储相关数据很有用,一般情况下,我们先声明一个结构体以及其指针,例如:

type

PMyRc = ^TMyRc;

TMyRc = Record

id:string;

name:string;

age:integer;

end;

添加一个节点,显示信息为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;

释放树的事件deletion, 即使是删除也会执行这些代码。所以不用担心内存泄漏。但是如果不书写以下代码,或者用相关的方式释放内存,必定会造成内存泄漏。

procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);

begin

dispose(pmyrc(node.data));

end;

访问某个树枝中的age值:

Pmyrc(TreeView1.Selected.data)^.age