创建一个与VCL和FMX兼容的新组件。

6
我正在制作一些组件,并希望使它们兼容VCL和FMX。因此,我有一个遵循以下模式的结构:
General_dpk(具有TCustomMyClass)+ VCL_dpk(具有TMyClass)+ FMX_dpk(具有TMyClassFMX)
每个包都有其注册过程来注册其组件。在组件面板中会出现两个组件(VCL和FMX)。如何使组件根据所选项目类型(VCL或FMX)仅出现相应的组件,就像其他Delphi组件一样?
谢谢

你们有哪些类型的组件?是可见的还是不可见的? - Sir Rufo
@Sir Rufo,它们是非可视组件。 - cadetill
非可视化组件与VCL或FMX无关。为什么要分开呢?您认为TADOConnection在VCL和FMX中不同吗? - Sir Rufo
@Sir Rufo 这些组件有一些属性(如颜色),这些属性取决于框架(在 VCL 中是 TColor,在 FMX 中是 TAlphaColor),或者需要一些依赖于框架的库(如 Dialogs)。 - cadetill
如果您的组件正在引用颜色和对话框,则您的组件并不是真正的非可视化组件。请考虑重构这些引用或将其分为运行时和设计时包。 - Alan Clark
@Alan Clark 我正在开发的组件是用于管理 Google Maps API 的。在这些组件中,我指定了地图、标记、折线等功能。因此,我无法将它们的属性分开放置在不同的包中。 - cadetill
2个回答

6

经过长时间的搜索,我在Embarcadero论坛上提出了问题。在那里,Remy友善地给我提供了答案(当您知道答案时,它变得很容易)。问题是您需要像这样在注册过程中调用GroupDescendentsWith函数。

// para componentes VCL
GroupDescendentsWith(TMyClass, Vcl.Controls.TControl);

// para componentes FMX
GroupDescendentsWith(TMyClassFMX, Fmx.Types.TControl);

在Embarcadero论坛上的答案可以在这里找到。


0

1
那会有什么帮助呢?知道 Delphi IDE 是 VCL 还是 FMX 应用程序有什么相关性吗? - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接