如何在子节点编程更改时自动更新父节点的 CheckState?
How to Auto Update the CheckState of the parent nodes When Child's Changed Programmingly?
我正在使用 Delphi XE3 和 Virtual TreeView。
我启用了 toAutoTristateTracking 选项。
当我尝试手动更改节点的检查状态时,受影响的节点的检查状态也会更改。
然而,当我以编程方式做同样的事情时,例如
PNode^.CheckState := csMixedNormal;
或
PNode^.CheckState := csCheckedNormal;
只会更改 PNode 检查状态。受影响的节点不会改变它们的状态。为什么?
不要直接访问节点的CheckState
。使用数组 属性 CheckState[Node: PVirtualNode]
of TBaseVirtualTree
to read/write 检查状态。通过 属性 设置检查状态将应用与复选框相关的功能以及触发适当的事件,如 OnChecking
,
OnChecked
、OnInitNode
、...
这是你应该做的:
VirtualStringTree1.CheckState[PNode] := csCheckedNormal;
我正在使用 Delphi XE3 和 Virtual TreeView。
我启用了 toAutoTristateTracking 选项。
当我尝试手动更改节点的检查状态时,受影响的节点的检查状态也会更改。
然而,当我以编程方式做同样的事情时,例如
PNode^.CheckState := csMixedNormal;
或
PNode^.CheckState := csCheckedNormal;
只会更改 PNode 检查状态。受影响的节点不会改变它们的状态。为什么?
不要直接访问节点的CheckState
。使用数组 属性 CheckState[Node: PVirtualNode]
of TBaseVirtualTree
to read/write 检查状态。通过 属性 设置检查状态将应用与复选框相关的功能以及触发适当的事件,如 OnChecking
,
OnChecked
、OnInitNode
、...
这是你应该做的:
VirtualStringTree1.CheckState[PNode] := csCheckedNormal;