Windows 10, Delphi 11.
我想设置.Checked
只为一个单一的TTreeNode
与复选框的孩子。这是TreeViews中的默认行为。但是下面的代码也选择所有兄弟节点(与起始节点在同一级别上)。实际上,调用Node.GetNextChild()
和Node.GetNextSibling()
似乎没有任何区别。
procedure TMapIntForm.CheckAllNodes(Node: TTreeNode; Check: Boolean);
var
AParent: TTreeNode;
begin
AParent := Node;
while (Node <> nil) do
begin
Node.Checked := Check;
CheckAllNodes(Node.GetFirstChild(), Check);
if Node <> TreeView.Selected then
Node := Node.GetNextChild(Node) // .GetNextSibling()?
else Node := nil;
end;
end;
如何检查某个级别上的节点的only子节点,而不检查相同级别上的其他节点?
1条答案
按热度按时间gudnpqoy1#
您将错误的节点传递到
GetNextChild()
。它需要在父节点上调用它的子节点,但您将父节点本身传递给它。我建议使用一个不同的循环来处理子节点: