【问题标题】:How to have the same name for VCL and FMX components?VCL 和 FMX 组件如何同名?
【发布时间】:2021-11-08 08:21:16
【问题描述】:

Delphi 设法让TLabel 存在于 FMXVCL 中。那么,除了一个用于VCL,一个用于FMX之外,如何创建两个同名的组件?

是的,我知道我可以使用ifdefs 并每次都重新编译库。但这并不是完全干净的代码。

【问题讨论】:

    标签: delphi components firemonkey vcl


    【解决方案1】:

    在不同的Unit Scopes 中实现您的两个组件,这些组件正是为此目的而创建的。

    例如,在Vcl.MyUnit.pas 中为VCL 实现TMyComponent,在FMX.MyUnit.pas 中为FMX 实现TMyComponent

    然后,要在任何其他单元中使用TMyComponent,您可以:

    • 使用{$IFDEF}s 在uses 子句中有条件地指定Vcl.MyUnitFMX.MyUnit

    • 为 VCL 和 FMX 创建单独的项目,其中 VCL 项目在其 Unit Scope Names compiler setting 中指定 Vcl,而 FMX 项目指定 FMX,然后您可以在 uses 子句中仅使用 MyUnit

    另见Adding Unit Scope Names for Your Own Components

    作为参考,VCL 的 TLabelVcl.StdCtrls 单元范围内,FMX 的 TLabelFMX.StdCtrls 单元范围内。

    【讨论】:

    • 昨天我发现关键是使用命名空间。但这是正确的答案
    • @RohitGupta 命名空间和单元范围相似,但用途略有不同。
    猜你喜欢
    • 2016-11-28
    • 2021-11-15
    • 1970-01-01
    • 2012-12-16
    • 2012-01-28
    • 2015-02-06
    • 1970-01-01
    • 2014-10-14
    • 2012-09-29
    相关资源
    最近更新 更多