2

SynEdit 组件具有“荧光笔”属性,其中包含一个下拉列表,其中列出了所有当前存在的荧光笔(设计时)。对我来说,这似乎是设计时组件的一个非常重要的概念,但我根本无法弄清楚它是如何工作的:

假设您将 TSynEdit 和 TSynPasSyn 下拉到表单上。然后单击具有 Highlighter 属性的 TSynedit。您现在可以选择之前创建的 TSynPasSyn。如果您创建另一个 TSynPasSyn,它也会添加到此列表中。我的问题:

在您自己的组件中执行此类操作的最佳方法是什么?您可以简单地使用属性编辑器还是需要自定义帮助程序类,或者完全不同的东西?

4

1 回答 1

11

也许这会让您大吃一惊,但无需任何操作即可在您自己的组件中的组件属性的属性编辑器中列出现有组件。只需将属性声明为所需的类型,VCL 框架将完成剩下的工作。

例如,考虑这个非常简单的组件:

type
  TButtonSelector = class(TComponent)
  private
    FButton: TButton;
  published
    property Button: TButton read FButton write FButton;
  end;

在 IDE 中安装此组件后,当您在 Object Inspector 中选择 Button 属性时,会列出当前 Form 上的所有现有按钮。

这都是内置的DesignEditors.TComponentProperty,这意味着唯一的要求是让您想要选择的对象下降TComponent

于 2013-11-23T12:08:23.973 回答