【问题标题】:published properties not showing in designer未在设计器中显示的已发布属性
【发布时间】:2017-06-28 12:34:09
【问题描述】:

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

但是,我遇到了 Delphi 10.2 Tokyo 的问题。具体来说,我没有看到调用this post 中的适当方法的好方法。

总而言之,需要调用RegisterCustomModule(),但是,在here 描述的DesignIntf 单元中,没有TCustomModule(虽然有TBaseCustomModuleTCustomModuleClass),基本自定义模块也继承自TInterfacedObjectTForm 没有(使用 FMX 作为我的框架)。

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

【问题讨论】:

    标签: delphi firemonkey delphi-10.2-tokyo


    【解决方案1】:
    uses DesignEditors;
    
    type
       TMySpecialForm = class(TCustomForm)
       end;
    
    
    RegisterCustomModule(TMySpecialForm, TCustomModule);
    

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

    TCustomModule 类供您在设计时添加到自定义表单的默认行为之外使用。

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

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

    【讨论】:

    • 谢谢 Dave,我了解需求,但我不知道 TCustomModule 类是在 DesignEditors 单元中声明的。另外,欣赏这个例子。
    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多