在虚拟树中设置节点状态
Set node state in a virtual tree
我创建了一个具有多个节点的虚拟树,我想禁用其中的一些节点。我看到有一个 States
属性 的节点。这是 TVirtualNodeStates
类型的 属性,所以我检查了我可以设置哪种状态,显然 TVirtualNodeStates
是 set of TVirtualNodeState
。
TVirtualNodeState
可以设置为 vsDisabled
所以我想这就是我需要禁用我的虚拟树中的节点。
但我做不到。这是我实际尝试过的:
lNode := myTree.addChild(nil);
lNode.States := vsDisabled;
它给了我错误
incompatible types between TVirtualNodeStates
and TVirtualNodeState
我怎样才能禁用节点?
您可以编写 Node.States := [vsDisabled];
,使您的代码可编译。但这不是你应该做的。有一些节点状态你必须保持不变,并且通过提到的语句你会扔掉它们并只设置 vsDisabled
一个。你想写:
Include(Node.States, vsDisabled);
或:
Node.States := Node.States + [vsDisabled];
另一个选项(应该是首选)是通过 IsDisabled
属性:
设置状态
VirtualTree.IsDisabled[Node] := True;
我创建了一个具有多个节点的虚拟树,我想禁用其中的一些节点。我看到有一个 States
属性 的节点。这是 TVirtualNodeStates
类型的 属性,所以我检查了我可以设置哪种状态,显然 TVirtualNodeStates
是 set of TVirtualNodeState
。
TVirtualNodeState
可以设置为 vsDisabled
所以我想这就是我需要禁用我的虚拟树中的节点。
但我做不到。这是我实际尝试过的:
lNode := myTree.addChild(nil);
lNode.States := vsDisabled;
它给了我错误
incompatible types between
TVirtualNodeStates
andTVirtualNodeState
我怎样才能禁用节点?
您可以编写 Node.States := [vsDisabled];
,使您的代码可编译。但这不是你应该做的。有一些节点状态你必须保持不变,并且通过提到的语句你会扔掉它们并只设置 vsDisabled
一个。你想写:
Include(Node.States, vsDisabled);
或:
Node.States := Node.States + [vsDisabled];
另一个选项(应该是首选)是通过 IsDisabled
属性:
VirtualTree.IsDisabled[Node] := True;