Delphi管理有TLabel
存在于FMX和VCL。那么,我如何创建两个具有相同名称的组件,除了一个是VCL一个是FMX
?是的,我知道我可以使用ifdef
s并每次重新编译库。但这并不是干净的代码。
在不同的Unit scope中实现您的两个组件,它们正是为此目的而创建的。
例如,在Vcl.MyUnit.pas
中实现VCL的TMyComponent
,在FMX.MyUnit.pas
中实现FMX的TMyComponent
。
然后,在任何其他单元中使用TMyComponent
,您可以:
-
使用
{$IFDEF}
s在uses
子句中指定Vcl.MyUnit
或FMX.MyUnit
。 -
为VCL和FMX创建单独的项目,其中VCL项目在其Unit Scope Names编译器设置中指定
Vcl
, FMX项目指定FMX
,然后您可以在uses
子句中仅使用MyUnit
。
请参见为自己的组件添加单元作用域名称。
作为参考,VCL的TLabel
在Vcl.StdCtrls
单元范围内,FMX的TLabel
在FMX.StdCtrls
单元范围内。