【问题标题】:Create a new component compatible with VCL and FMX创建兼容 VCL 和 FMX 的新组件
【发布时间】:2012-12-16 19:12:45
【问题描述】:

我正在做一些组件,我想让它们兼容 VCL 和 FMX。所以我有一个遵循这种模式的结构:

General_dpk(带有 TCustomMyClass)+ VCL_dpk(带有 TMyClass)+ FMX_dpk(带有 TMyClassFMX)

每个包都有注册其组件的注册程序。在组件面板中出现两个组件(VCL 和 FMX)。如何像其他 Delphi 组件一样仅根据所选项目类型(VCL 或 FMX)显示组件?

谢谢

【问题讨论】:

  • 你有什么样的组件?视觉还是非视觉?
  • @Sir Rufo 他们是非视觉组件
  • 非可视组件与 VCL 或 FMX 无关。为什么要分开?你觉得 TADOConnection 在 VCL 和 FMX 上有什么不同吗?
  • @Sir Rufo 这个组件有一些依赖于框架的属性(比如颜色)(在 VCL 中是 TColor,在 FMX 中是 TAlphaColor)和/或需要一些依赖于框架的库(比如对话框)
  • @Cadetill 如果您的组件正在引用颜色和对话框,那么您的组件并不是真正的非可视组件。考虑重构这些引用或将其分离为运行时和设计时包。

标签: delphi


【解决方案1】:

好吧,经过长时间的搜索,我在 Embarcadero 论坛上提问了。在那里,雷米友善地告诉我答案(当你知道时很容易)。问题是您需要像这样在注册过程中调用 GroupDescendentsWith 函数

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

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

Embarcadero 论坛上的答案here

【讨论】:

    【解决方案2】:

    您可以在此答案的注册过程代码中使用:Delphi XE2: Is there a predefined conditional to identify VCL and FireMonkey? 来检查它是 Firemonkey 还是 VCL 应用程序。

    【讨论】:

    • 这有什么帮助?为什么要知道 Delphi IDE 是 VCL 还是 FMX 应用程序?
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2016-11-28
    • 2012-11-28
    • 1970-01-01
    • 2015-02-06
    • 2015-12-11
    相关资源
    最近更新 更多