读书人

treeview.node.data

发布时间: 2012-07-29 15:26:14 作者: rapoo

求助treeview.node.data

Delphi(Pascal) code
       Tnode2 := TVdept.Items.AddChild(Tnode,deptname);       Tnode2.Data := Pointer(deptid);


如何取出deptid? 结构体,类啊就算了,我想简单点。先谢各位了!

[解决办法]
道理一样的,存的什么类型,就用什么类型转换

string(Tnode2.Data);
[解决办法]
应该这么用:
var
deptid:PChar
begin
new(deptid, size);
Tnode2 := TVdept.Items.AddChild(Tnode,deptname);
Tnode2.Data := deptid;
end;

另外程序结束时别忘记释放
[解决办法]
使用data需要分配、释放内存空间太麻烦
我给Treenode增加了一个dataString,使用起来就无须分配、释放内存空间了
[解决办法]
var
deptid : PString;
begin
//...
New(deptd);
deptd^ := .....;
Tnode2 := TVdept.Items.AddChild(Tnode,deptname);
Tnode2.Data := Pointer(deptid);
//增加过程不能对deptid释放
end;

取数据的时候
var
deptid : PString;
begin
//...
deptid := Tnode2.Data;
ShowMessage(deptid^);
//
end;

//释放的时候
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
Dispose(PString(Node.Data));
end;


不过我偏好,在Form上定义一个array of xxx
然后在Node.Data中写入序号,取出序号,然后在array中即可取得数据
这样就可以不管释放的问题.
[解决办法]
探讨

var
deptid : PString;
begin
//...
New(deptd);
deptd^ := .....;
Tnode2 := TVdept.Items.AddChild(Tnode,deptname);
Tnode2.Data := Pointer(deptid);
//增加过程不能对deptid释放
end;

取数据的时候……

读书人网 >.NET

热点推荐