Delphi 可以在多个组件上执行组件编辑器吗?

Delphi 可以在多个组件上执行组件编辑器吗?,delphi,custom-controls,Delphi,Custom Controls,短版 我正在尝试为我制作的自定义按钮实现我的第一个组件编辑器。在一些在线文章的帮助下,我成功地安装了编辑器,当我右键单击表单设计器中的按钮时,可以看到菜单项 但当选择多个按钮控件时,此组件编辑器菜单不显示 默认情况下,组件编辑器是否只能与单个选定控件一起工作,还是可以与多个选定控件一起工作?如果可以,如何工作 长版本 我当时正在为我自己的一个组件实现TPropertyEditor,但现在决定使用TComponentEditor会更好,至少我是这么认为的 基本上我有一个TCustomButton,

短版

我正在尝试为我制作的自定义按钮实现我的第一个组件编辑器。在一些在线文章的帮助下,我成功地安装了编辑器,当我右键单击表单设计器中的按钮时,可以看到菜单项

但当选择多个按钮控件时,此组件编辑器菜单不显示

默认情况下,组件编辑器是否只能与单个选定控件一起工作,还是可以与多个选定控件一起工作?如果可以,如何工作

长版本

我当时正在为我自己的一个组件实现TPropertyEditor,但现在决定使用TComponentEditor会更好,至少我是这么认为的

基本上我有一个TCustomButton,它是我自己绘制的,这个按钮组件有几个发布的属性,用于更改外观,例如边框和填充颜色等

我正在实现的组件编辑器在上下文菜单中显示一个新的菜单项,用于从文件加载设置。执行时,会显示一个简单的TopEndDialog,您可以在其中选择适当的文件,例如Ini文件,然后我从该文件中读取并相应地设置值

从我所看到的情况来看,一切都很好,但由于我还是一个新手,并且正在掌握Delphi的整个自定义控件方面,我注意到一些事情没有发生——我不确定这是否是实际的预期行为,或者我是否可以改变它

问题是在“我的按钮”控件的多个选定实例上使用“组件编辑器”菜单。如果只选择了一个按钮,并在设计器中单击鼠标右键,则“我的菜单”将显示在关联菜单的顶部,但多个选定控件不会显示“组件编辑器”菜单

代码示例

在注册程序单元中:

RegisterComponentEditor(TMyButton, TMyButtonEditor);
从我所看到的情况来看,在任何给定的时间,只有单个组件可以使用组件编辑器,还是我错了,它们可以在多个控件上使用


我希望选择表单设计器上的3或4个按钮,然后使用组件编辑器将导入的设置一次应用到这些按钮上。

组件编辑器只能对单个组件进行操作


这是一个非常好的理由,尽可能通过对象检查器而不是组件编辑器使属性可用。因为对象检查器可以同时对多个组件进行操作。

组件编辑器只能对单个组件进行操作


这是一个非常好的理由,尽可能通过对象检查器而不是组件编辑器使属性可用。因为Object Inspector可以一次对多个组件进行操作。

我需要重新考虑我的方法,因为手动选择并右键单击每个按钮只是为了从配置文件加载和应用设置太单调乏味了。用于更改按钮视觉外观的属性都已发布,但将值存储在文件中对于快速导入现有按钮外观设置非常方便。请添加另一个样式组件,并将此类样式器的属性添加到按钮类中。@NGLN是正确的,通过添加一层indirection@NGLN好主意谢谢你的建议,我可以创建另一个组件来代替为每个按钮控件调用编辑器。谢谢你的回答,David,这很快就解决了我的问题。我需要重新思考我的方法,因为手动选择并右键单击每个按钮来加载和应用配置文件中的设置太单调乏味了。用于更改按钮视觉外观的属性都已发布,但将值存储在文件中对于快速导入现有按钮外观设置非常方便。请添加另一个样式组件,并将此类样式器的属性添加到按钮类中。@NGLN是正确的,通过添加一层indirection@NGLN好主意谢谢你的建议,我可以创建另一个组件来代替为每个按钮控件调用编辑器。谢谢你的回答,大卫,这很快就解决了我的问题。
RegisterComponentEditor(TMyButton, TMyButtonEditor);