Delphi 双击非可视组件

Delphi 双击非可视组件,delphi,components,double-click,Delphi,Components,Double Click,可能重复: 我正在创建一个非可视组件,我希望用户能够在设计时双击我的组件并打开一个设计时编辑器 如何操作?在设计时双击组件将调用组件编辑器。默认组件编辑器用于查找具有特定名称的事件属性,并为其找到的内容创建处理程序。您可以编写自己的组件编辑器,它可以执行任何您想要的操作 创建(来自DesignEditor单元)的子体并重写该方法以处理双击。您还可以重写GetVerbCount、GetVerb和ExecuteVerb方法,将上下文菜单项添加到组件中。要获取编辑器被要求编辑的组件的引用,请检查组件

可能重复:

我正在创建一个非可视组件,我希望用户能够在设计时双击我的组件并打开一个设计时编辑器


如何操作?

在设计时双击组件将调用组件编辑器。默认组件编辑器用于查找具有特定名称的事件属性,并为其找到的内容创建处理程序。您可以编写自己的组件编辑器,它可以执行任何您想要的操作

创建(来自DesignEditor单元)的子体并重写该方法以处理双击。您还可以重写
GetVerbCount
GetVerb
ExecuteVerb
方法,将上下文菜单项添加到组件中。要获取编辑器被要求编辑的组件的引用,请检查
组件
属性。如果编辑器修改组件,则调用

通过调用
寄存器
过程中的DesignIntf,告诉IDE编辑器应与组件一起使用


您应该将此代码放在设计时包中,与组件的代码分开。将运行时包放在设计时包的“需要”列表中。如果将所有内容都放在一个包中,那么组件的使用者将无法在其项目中使用运行时包;他们不允许分发设计时包的依赖项,这些依赖项只供IDE使用。

@David可能正试图创建一个“全局”甚至是处理程序,比如:一个组件为各种可视组件保存相同的“双击”事件处理程序,所以他可能想把它设置在一个非视觉上,然后做一些类似“Apple([Butn1,Butn2,Butn3,PANEL5])”,可能是错误的,但是如果我是对的,“Astervista”考虑一个不同的方法。我是指在设计时双击。我想在设计时双击SaveDeLax之类的东西。这是一个欺骗。(见上面的评论)。简单的答案是从
TComponentEditor
派生组件编辑器,并覆盖到
Edit
方法。@David:这正是我的第一反应。在绝地JVCL代码库中有这样的例子。例如,我最近为
tJVCSDataSet
重新实现了这样一个东西。