我有一个 TListView 后代,它引入了其他功能,例如从数据集中排序和加载。
我现在希望修改该类,以便无论何时选中或取消选中一个项目,它都会在选中项目的内部列表中添加或删除,以便使用组件实例的应用程序可以轻松读取选中项目的数量和位置,而无需遍历列表视图中的所有项目。
不幸的是,TCustomListView 似乎没有将检查/取消检查操作的处理抽象为我可以覆盖的一些内部方法(如 DoCheck),而是将检查逻辑嵌入到一个大型消息处理函数中。
我能想到的将我自己的行为巧妙地引入组件的唯一方法是劫持 OnItemChecked 属性,导致该属性读取和写入 FOnItemCheckedUser(例如)而不是 FOnItemChecked,将我自己的代码放在 FOnItemChecked 中,然后从我的代码。
有没有更直接的方法来处理这个问题?如果不是,我的想法是否可行且实施安全?