gpt4 book ai didi

delphi - 绝地督察没有触发事件?

转载 作者:行者123 更新时间:2023-12-02 12:51:20 26 4
gpt4 key购买 nike

我注意到 TJvInspector 有一个 OnItemDoubleClicked 事件,我认为这正是我所需要的,因为我需要检测鼠标是否双击了 Color Item 属性(我想显示我自己的颜色表单允许选择自定义颜色等)。

但我什至根本无法触发事件,例如:

procedure TfrmInspector.JvInspector1ItemDoubleClicked(Sender: TObject;
Item: TJvCustomInspectorItem);
begin
if Item is TJvInspectorColorItem then
ShowMessage('you double clicked on a color property')
else
ShowMessage('not a color property');
end;

如果我将光标设置在该事件中的任何位置并使用 F4 运行,或者甚至在那里设置断点,那么在运行时显然不会触发消息框,也不会弹出。

这是 Jedi Inspector 组件的错误或已知问题吗?

我通常不会使用它们,而且似乎总是遇到麻烦。

最佳答案

通过查看 JvInspector 代码,当没有项目编辑器(只读?)并且该项目是对象属性时,会触发 OnItemDoubleClicked。所以这绝对是一个错误的事件(而且它的名称具有误导性)。

问题是双击事件不是针对 JvInspector 控件,而是针对当前编辑器控件(TEdit、TComboBox,...)。所以 JvInspector 看不到双击。要解决此问题,您需要 Hook 编辑器的 OnDblClick 事件。为此,JvInspector 有 OnBeforeEdit 事件。

procedure TForm1.JvInspector1BeforeEdit(Sender: TObject; Item: TJvCustomInspectorItem;
Edit: TCustomEdit);
begin
TEdit(Edit).OnDblClick := ItemDblClick;
end;

procedure TForm1.ItemDblClick(Sender: TObject);
begin
ShowMessage(JvInspector1.Selected.Name);
Abort; // don't change the value by the default double click handler
end;

这不适用于“设置”属性或没有编辑器控件的其他属性。

关于delphi - 绝地督察没有触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14182460/

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