gpt4 book ai didi

delphi - 如何让编辑器在 Virtualtreeview 中保持事件状态?

转载 作者:行者123 更新时间:2023-12-03 14:54:14 25 4
gpt4 key购买 nike

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

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

<小时/>

该组件几乎可以工作并且可以处理多个编辑器,但我遇到了一个烦人的错误:

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

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

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

编辑:添加了有关我的代码的说明和精确性。

illustration of the problem

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

<小时/>

我尝试并发现的结果:

2003年编译的高级演示(属性树页面)found here似乎工作原理就像我对组件(和虚拟 TreeView )的期望。

但是当我在 delphi 2007 和 2009 上编译这个相同的演示时(我尝试使用 google code 上当前主干的版本 4.5.2、4.8.7 甚至 5.0.0),错误再次出现!

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

我仍然不知道这个问题是来自新的 delphi RTL 还是 virtualtreeview 中的重大更改(错误?)。

所以我的问题:

  • 您在编译Advanced demo时是否也遇到同样的问题?
  • 有任何代码提示或解决方法可以解决我的问题吗?
<小时/>

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

最佳答案

VST onChange 只是通过更改节点选择来调用。如果节点已经被选择,状态将不再改变。因此,您必须自己实现类似于对象检查器的行为,例如通过在 OnClick-Callback 中调用 VST EditNode()-Method:

procedure TMainForm.VSTClick(Sender: TObject);
var node: PVirtualNode;
begin
node:= VST.GetFirstSelected();
if(node <> nil) then
VST.EditNode(node, EDITABLE_COLUMN_INDEX);
end;

关于delphi - 如何让编辑器在 Virtualtreeview 中保持事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com