如何知道虚拟树视图中的节点是根目录?



我正在使用虚拟树视图。有没有可靠的方法来知道节点是否是根节点?

我尝试使用

if not Assigned(Node.Parent) then
Output('This is root')
else
Output('This is not root')

但不起作用。

我尝试使用

if Node = tvItems.RootNode then
Output('This is root')
else
Output('This is not root')

但也不行。

VTV

(或VST(中的最终根节点是一个特殊的不可见节点,它充当所有用户创建的根节点(使用parent = nil创建的节点(的父节点。这个特殊的不可见节点在设计上将其NextSiblingPrevSibling属性设置为指向自身。

要检测节点是否是根节点(在用户创建的根的意义上(,您可以执行以下操作:

procedure TForm16.tvItemsNodeClick(Sender: TBaseVirtualTree;
const HitInfo: THitInfo);
begin
if HitInfo.HitNode.Parent.NextSibling = HitInfo.HitNode.Parent then
Caption := 'Root node'
else
Caption := 'Not root node';
end;

或者,正如OP所评论的那样,并且不使用内部实现细节:

procedure TForm16.tvItemsNodeClick(Sender: TBaseVirtualTree;
const HitInfo: THitInfo);
begin
if HitInfo.HitNode.Parent = Sender.RootNode then
Caption := 'Root node'
else
Caption := 'Not root node';
end;

参考: TBaseVirtualTree.RootNode Property (in Help(

相关内容

  • 没有找到相关文章

最新更新