如何创建列出其他组件的组件属性?

时间:2013-11-23 07:20:07

标签: delphi properties lazarus synedit

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

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

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

1 个答案:

答案 0 :(得分:11)

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

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

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

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

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