如何对VCL和FMX组件具有相同的名称?



Delphi管理有TLabel存在于FMXVCL。那么,我如何创建两个具有相同名称的组件,除了一个是VCL一个是FMX

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

在不同的Unit scope中实现您的两个组件,它们正是为此目的而创建的。

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

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

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

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

请参见为自己的组件添加单元作用域名称。

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

最新更新