已发布的属性未在设计器中显示

published properties not showing in designer

在以前的 Delphi 版本中,我的自定义表单显示了其已发布的属性。

但是,我 运行 遇到了 Delphi 10.2 Tokyo 的问题。具体来说,我没有看到调用 this post.

中的适当方法的好方法

综上所述,需要调用 RegisterCustomModule(),但是,在 DesignIntf 描述的单元中 here,没有 TCustomModule(有 TBaseCustomModuleTCustomModuleClass,但是),基本自定义模块也继承自 TInterfacedObject,而 TForm 没有(使用 FMX 作为我的框架)。

在最新版本 Delphi 中注册 FMX 表单以显示已发布属性的正确方法是什么?

uses DesignEditors;

type
   TMySpecialForm = class(TCustomForm)
   end;


RegisterCustomModule(TMySpecialForm, TCustomModule);

RegisterCustomModule 接受 2 个参数:ComponentBaseClassCustomModuleClass。第一个是您的自定义表单 class,当然,它会派生自 TCustomForm。第二个是设计人员将使用的 class。这个 class 必须做两件事:从 TBaseCustomModule 派生(在 DesignIntf 单元中)并实现 ICustomModule 接口。看一下 DesignEditors 单元中的注释,大约在第 502 行。

TCustomModule class 供您使用,如果您在设计时除了默认添加到您的自定义表单之外没有其他行为。

如果您确实希望在设计器中为您的表单设置某种自定义行为,例如,带有各种 属性 设置命令的弹出菜单,您可以创建自己的 TCustomModule class:

uses DesignEditors;

type
    TMySpecialFormDesigner = class(TCustomModule, ICustomModule)
        function GetVerb(Index: Integer): string; override;
        function GetVerbCount: Integer; override;
    end;

RegisterCustomModule(TMySpecialForm, TMySpecialFormDesigner);