【发布时间】:2011-06-08 12:08:10
【问题描述】:
我发现了一个似乎与 TTreeView 相关的错误。
- 获取一个包含
TTreeView的表单,其中HideSelection设置为True。 - 使树形视图多选并在树形视图中选择多个项目。
- 显示另一个表单,以便您的应用有两个表单。
- 将焦点放在树视图上,然后单击其他窗体。
结果如下:
但实际上应该没有突出显示的项目。有趣的是,最后一个项目被选中,它不再突出显示,所有其他项目确实如此。似乎最近点击的项目是获得特殊处理的项目。
如果您单击编辑框(或任何其他获得焦点的控件),则所有项目都将正确隐藏。因此,将焦点转移到表单上的另一个控件就可以了——问题似乎仅限于停用表单。
我通过反复试验发现,只要表单被停用和激活(需要防止错误的镜像),我可以通过在树视图上调用 Invalidate 来解决此问题。但是,我希望更好地了解错误是什么以及如何以侵入性较小的方式修复它,即在树视图级别而不是包含表单级别。
所以,总而言之,我的问题是:
- 究竟是什么导致了问题?
- 如何在不编写挂钩
TForm事件的代码的情况下修复它?
将问题提交为QC#94908。
【问题讨论】:
-
我已经尝试过了,在 D2009 中也是如此。正如您所说,具有焦点的项目将其隐藏;其余部分仍然突出显示。
标签: delphi delphi-2010