在虚拟树中设置节点状态

Set node state in a virtual tree

我创建了一个具有多个节点的虚拟树,我想禁用其中的一些节点。我看到有一个 States 属性 的节点。这是 TVirtualNodeStates 类型的 属性,所以我检查了我可以设置哪种状态,显然 TVirtualNodeStatesset 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;