我正在做一些组件,我想让它们兼容 VCL 和 FMX。所以我有一个遵循这种模式的结构:
General_dpk(使用 TCustomMyClass)+ VCL_dpk(使用 TMyClass)+ FMX_dpk(使用 TMyClassFMX)
每个包都有注册其组件的注册程序。在组件面板中出现两个组件(VCL 和 FMX)。如何像其他 Delphi 组件一样仅根据所选项目类型(VCL 或 FMX)显示组件?
谢谢
我正在做一些组件,我想让它们兼容 VCL 和 FMX。所以我有一个遵循这种模式的结构:
General_dpk(使用 TCustomMyClass)+ VCL_dpk(使用 TMyClass)+ FMX_dpk(使用 TMyClassFMX)
每个包都有注册其组件的注册程序。在组件面板中出现两个组件(VCL 和 FMX)。如何像其他 Delphi 组件一样仅根据所选项目类型(VCL 或 FMX)显示组件?
谢谢
好吧,经过长时间的搜索,我在 Embarcadero 论坛上问过了。在那里,雷米友善地告诉我答案(当你知道时很容易)。问题是您需要像这样将 GroupDescendentsWith 函数调用到注册过程中
// para componentes VCL
GroupDescendentsWith(TMyClass, Vcl.Controls.TControl);
// para componentes FMX
GroupDescendentsWith(TMyClassFMX, Fmx.Types.TControl);
Embarcadero 论坛的答案在这里
您可以在此答案的注册过程代码中使用:Delphi XE2:是否有预定义的条件来识别 VCL 和 FireMonkey?检查它是 Firemonkey 还是 VCL 应用程序。