我正在尝试基于 VirtualTreeView 构建一个简单的 2 列网格“属性编辑器”。
(我想模仿在 Delphi 的 IDE 对象检查器上看到的外观和用户体验)
该组件几乎可以工作并且可以处理多个编辑器, 但我面临一个烦人的错误:
当我单击一个新节点(新行)时,该节点被选中并出现编辑器,而与我单击的列无关。这是预期的,可以的。
然后,当我单击同一行的第一列时,我希望看到我的编辑器内容得到验证并且编辑器保持焦点(就像在 delphi 的对象检查器中一样)。
但是编辑器内容被验证然后它消失并且整个节点(行)被选中。编辑器不会返回(即使我单击第二列),直到我选择另一个节点并单击先前选择的节点。
编辑:添加了关于我的代码的说明和精度。
关于代码: 我没有在此处插入代码,因为我使用(作为起点)与高级演示(属性页面)上找到的完全相同的代码
我尝试并发现了什么:
在这里找到的 2003 年编译的高级演示(属性树页面)似乎与我对组件(和虚拟树视图)的期望一样。
但是当我编译这个相同的演示(我在谷歌代码的当前主干上尝试使用版本 4.5.2、4.8.7 甚至 5.0.0,在 delphi 2007 和 2009 上)时,错误再次出现!
我首先认为在 2003 年和最近的版本之间有一个记录在案的重大变化,但我找不到任何东西。我也尝试了所有可用的选项来解决这个问题,但没有成功。
我仍然不知道这个问题是来自新的 delphi RTL 还是 virtualtreeview 中的重大更改(错误?)。
所以我的问题:
- 编译 Advanced demo 时有同样的问题吗?
- 代码中的任何提示或解决方法可以解决我的问题吗?
作为旁注,我今天下午几乎放弃了 virtualtreeview,我想尝试使用另一个组件的解决方案...我发现了这个有趣的问题并决定尝试 berg 的组件,但在阅读关于的建议时在购买过程中停止了他们的主页(请参阅我对相关问题的评论)