Delphi,VirtualStringTree – 类(对象)而不是记录
发布时间:2020-12-15 10:12:49 所属栏目:大数据 来源:网络整理
导读:我需要为VirtualStringTree节点使用类而不是记录. 我应该声明它是标准的(但在这种情况下是棘手的)方式: PNode = ^TNode;TNode = record obj: TMyObject;end;//..var fNd: PNode;beginfNd:= vstTree.getNodeData(vstTree.AddChild(nil));fNd.obj:= TMyObject
我需要为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); >获取datasize holder并绑定到您的对象 vstTree.getNodeData(passed in interested node)^ := your object 要么 vstTree.getNodeData(vstTree.AddChild(nil))^ := TMyObject.Create; 要么 vstTree.OnFreeNode := FreeNodeMethod; 同 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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |