我需要使用类而不是 VirtualStringTree 节点的记录。
我应该像这样声明它标准(但在这种情况下 - 棘手):
PNode = ^TNode;
TNode = record
obj: TMyObject;
end;
//..
var
fNd: PNode;
begin
fNd:= vstTree.getNodeData(vstTree.AddChild(nil));
fNd.obj:= TMyObject.Create;
//..
或者我应该直接使用TMyObject
?如果是这样-怎么办?
分配(构造)对象并释放它怎么样?
提前致谢
米。
-
设置容纳对象的数据大小
vstTree.NodeDataSize := SizeOf(TMyObject);
-
获取数据大小持有者并绑定到您的对象
vstTree.getNodeData(passed in interested node)^ := your object
or
vstTree.getNodeData(vstTree.AddChild(nil))^ := TMyObject.Create;
or
使用 vstTree.InsertNode 方法
-
要释放绑定对象连接 OnFreeNode 事件
vstTree.OnFreeNode := FreeNodeMethod;
with
procedure TFoo.FreeNodeMethod(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
P: ^TMyObject;
begin
P := Sender.getNodeData(Node);
if P <> nil then
begin
P^.Free;
P^ := nil; //for your safety or you can omit this line
end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)