delphi - 如何在 Child 以编程方式更改时自动更新父节点的 CheckState?
问题描述
我正在使用带有 Virtual TreeView 的 Delphi XE3。
我已启用 toAutoTristateTracking 选项。
当我尝试手动更改节点的检查状态时,受影响节点的检查状态也会更改。
但是,当我以编程方式做同样的事情时,例如
PNode^.CheckState := csMixedNormal;
或者
PNode^.CheckState := csCheckedNormal;
只有 PNode 检查状态会改变。受影响的节点不会改变它们的状态。为什么?
解决方案
不要CheckState
直接访问节点。CheckState[Node: PVirtualNode]
使用数组属性TBaseVirtualTree
读取/写入检查状态。通过属性设置检查状态将应用与复选框相关的功能以及触发适当的事件,如OnChecking
,
OnChecked
, OnInitNode
, ...
这是你应该做的:
VirtualStringTree1.CheckState[PNode] := csCheckedNormal;
推荐阅读
- sql - 如何将来自多个相似列的数据用作 SQL 中的行
- excel - 如何在使用 vba 将格式从 excel 保留到 PowerPoint 的同时提取数据
- sql - Spark SQL - 计算所有列中不同单词的数量
- java - 在 Java 中使用 ASCII 旋转字符串
- python - 如何在加载 pytest 脚本之前使用 python-dotenv 从文件中加载环境变量?
- python - 如何在 python 中找到正确的向量/数组相似度?
- python - 使用 xlswriter worksheet.write_row() 写入 excel 时跳过第一列
- python-3.x - 使用三元运算符传递语法错误
- google-apps-script - 如何从 Google 表格中的不同函数调用 Google 表单中的函数?
- reactjs - 无法加载配置“更漂亮”以扩展。(此问题的先前参考没有帮助)