4

我正在使用 Delphi 2010 重写一个旧应用程序,我想在我的代码中放置占位符,以便将其移植到 XE2。只是好奇 FireMonkey 是否具有 GetSystemMetrics 的等价物。我特别感兴趣:

  • GetSystemMetrics(SM_CXSCREEN)
  • GetSystemMetrics(SM_CYSCREEN)
4

2 回答 2

5

如果您只需要主监视器大小,而不是桌面大小(n 个监视器总和),则可以使用:

uses ..., FMX.Platform;


var
  p: TPointF;
begin
  p := Platform.GetScreenSize;
  ShowMessage(Format('X: %f' + LineFeed + 'Y: %f', [p.X, p.Y]));

视窗 操作系统

于 2012-05-12T22:27:29.070 回答
1

事实上SM_CXSCREENSM_CYSCREEN可能根本不应该使用。这只是告诉你主显示器的尺寸。在这些多显示器的日子里,这并不是非常有用。在 VCL 代码中,您应该使用Screen.Monitors[]相关属性来获取有关您的监视器的信息。

至于 FMX,没有多显示器支持,也没有独立于平台的方法来找出屏幕尺寸指标。在您的情况下,当您使用 FMX 端口时,我会简单地使用Screen.Monitors[]和处理它。无论如何,当您移植到 FMX 时,您将不得不重新编写所有 GUI 代码,而这个特定问题是您最不担心的问题。

最后,当你说

当我将其移植到 XE2 时,我想在我的代码中放置占位符

我相信您知道移植到 FMX 不是强制性的。VCL 在 XE2 中仍然受支持和可用,我看不到它在很长一段时间内会被删除。您可以移植到 XE2 而与 FMX 无关。

于 2012-05-12T14:26:50.140 回答