如何在Virtualtreeview中保持编辑器的活力?

时间:2012-06-02 00:08:40

标签: delphi delphi-2009 delphi-2007 virtualtreeview

我正在尝试基于VirtualTreeView构建一个简单的2列网格“属性编辑器”。

(我想模仿在Delphi的IDE对象检查器上看到的外观和用户体验)


该组件几乎可以工作,可以处理多个编辑器, 但我面临一个令人讨厌的错误:

当我点击一个新节点(一个新行)时,无论我点击了哪一列,都会选择该节点并显示编辑器。这是预期的,没问题。

然后,当我点击同一行的第一列时,我希望看到我的编辑器内容得到验证,编辑器保持焦点(就像在delphi的对象检查器中一样)。

但编辑器内容已经过验证,然后消失,整个节点(行)被选中。编辑器将不会返回(即使我单击第二列),直到我选择另一个节点并单击返回先前选择的节点。

编辑:为我的代码添加了插图和精确度。

illustration of the problem

关于代码: 我这里没有插入代码,因为我使用(作为起点)与高级演示(属性页面)上的代码完全相同的代码


我尝试并发现了什么:

2003年编译的高级演示(属性树页面)found here似乎与我对组件(以及虚拟树视图)的期望一样。

但是当我编译这个相同的演示时(我尝试使用版本4.5.2,4.8.7甚至5.0版本来自谷歌代码的当前主干,在delphi 2007和2009上),错误再次出现!

我首先想到2003年和更新版本之间存在记录的重大变化, 但我找不到任何东西。 我也尝试过尝试解决这个问题的所有可用选项,但没有成功。

我仍然不知道这个问题是来自新的delphi RTL还是虚拟视图中的重大变化(bug?)。

所以我的问题:

  • 编译高级演示时遇到同样的问题吗?
  • 代码中的任何提示或解决方法都可以解决我的问题?

作为旁注,我今天下午几乎放弃了virtualtreeview,我想尝试另一个组件的解决方案......我发现这个interesting question并决定尝试berg的组件,但是在购买时停止了在他们的主页上阅读建议时的过程(参见我对相关问题的评论)

0 个答案:

没有答案