Delphi 具有默认TButton的VirtualStringTree

Delphi 具有默认TButton的VirtualStringTree,delphi,virtualtreeview,Delphi,Virtualtreeview,我有一个带有VirtualStringTree(VST)的表单和一个默认属性设置为true的TButton。VST的节点包含就地编辑器(TEdits)。问题是,编辑VST时,该按钮总是触发。在编辑VST时,如何将按钮保留为默认值,但使其忽略enter键?正如Rob所说,您可以使用VirtualTree事件临时禁用按钮。默认值属性。 例如: 在OnEditing事件禁用默认属性中 Button.Default := false; Button.Default := true; 在OnEdite

我有一个带有VirtualStringTree(VST)的表单和一个默认属性设置为
true
的TButton。VST的节点包含就地编辑器(TEdits)。问题是,编辑VST时,该按钮总是触发。在编辑VST时,如何将按钮保留为默认值,但使其忽略enter键?

正如Rob所说,您可以使用VirtualTree事件临时禁用
按钮。默认值
属性。 例如:

OnEditing事件禁用默认属性中

Button.Default := false;
Button.Default := true;
OnEditedOnEditCancelled事件中恢复默认属性

Button.Default := false;
Button.Default := true;

也许您可以在编辑开始时清除
Default
属性,并在编辑完成后再次设置它。我很确定树控件有一些事件可以让你检测到。我看不出有什么问题。默认的节点编辑器正确地吃掉了键,因此不需要做任何事情。@TLama我不同意你的看法。我用Delphi模拟了这个问题。具有默认属性的按钮在节点编辑器之前捕获密钥。上述解决方案有效,并且经过测试。仍然无法复制。我刚刚删除了一个启用了
Default
属性的按钮,该按钮带有一个显示消息VT(6.1.0)的单击处理程序,其中我将
toEditable
包含在
TreeOptions.mischoptions
中,并添加了几个节点。当我运行这样的应用程序(在DelphiXE3中构建)时,我开始编辑一个节点并按下Enter键。没有显示任何消息。因此,我看不到任何问题。@TLama,我也不能很好地复制(版本4.5.5),然后像
TVTEdit
那样实现它。