有没有更简单的说法说所有平台都支持Delphi组件/控件?

Dal*_*kar 5 delphi

为了使Delphi组件/控件可用于所有(当前)可用平台,我必须编写

  [ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidOSX32 or pidiOSSimulator or pidiOSDevice or pidAndroid)]
Run Code Online (Sandbox Code Playgroud)

在组件/控件声明之前。

有没有一种简短的方式编写该组件支持所有当前和将来的平台的信息

Rud*_*uis 6

没有更简单的方法,但您可以将它们定义为一个常量:

const
  AllCurrentPlatforms = 
    pidWin32 or pidWin64 or pidOSX32 or 
    pidiOSSimulator or pidiOSDevice or pidAndroid;
Run Code Online (Sandbox Code Playgroud)

并在每次创建新组件时使用它。但是,假设您不生产那么多组件,那么完整地写出它有什么问题,只需要几次?

我还假设如果您简单地省略该属性,则该组件将被视为支持所有平台。你可以测试一下。


AllPlatforms在 ToolsAPI/PlatformAPI 中实际上有一个类似的常量,但该单元不供一般运行时使用。

  • 省略 ComponentPlatformsAttribute 使组件仅在 Win32 平台 (XE2-XE4) 上可用 (2认同)

Dal*_*kar 5

使组件/控件可用于所有平台的更简单、绝对 hacky 的方法:

  [ComponentPlatforms(0)]
Run Code Online (Sandbox Code Playgroud)

或者以另一种方式

  [ComponentPlatforms($FFFF)]
Run Code Online (Sandbox Code Playgroud)

  • 很难理解为什么“0”会起作用。这是一个空的位集。当然,完全缺乏文档让我们只能猜测。`$FFFF` 具有所有位集,但与 `pidWin32 或 pidWin64 或 pidOSX32 或 pidiOSSimulator 或 pidiOSDevice 或 pidAndroid` 有很大不同。您刚刚声明支持所有未来平台。我一点也不热衷于这种方法。 (2认同)