Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi FireMonkey是否具有与GetSystemMetrics类似的功能?_Delphi_Firemonkey - Fatal编程技术网

Delphi FireMonkey是否具有与GetSystemMetrics类似的功能?

Delphi FireMonkey是否具有与GetSystemMetrics类似的功能?,delphi,firemonkey,Delphi,Firemonkey,我正在使用Delphi2010重写一个旧的应用程序,我想在代码中添加占位符,以便在将其移植到XE2时使用。只是好奇FireMonkey是否与GetSystemMetrics相当。我特别感兴趣的是: GetSystemMetrics(SM\U CXSCREEN) GetSystemMetrics(SM\u CYSCREEN) 事实上,SM\u CXSCREEN和SM\u CYSCREEN可能根本不应该使用。这只是告诉您主监视器的尺寸。在现在有多个监视器的日子里,这并不是非常有用。在VCL代码中,

我正在使用Delphi2010重写一个旧的应用程序,我想在代码中添加占位符,以便在将其移植到XE2时使用。只是好奇FireMonkey是否与GetSystemMetrics相当。我特别感兴趣的是:

  • GetSystemMetrics(SM\U CXSCREEN)
  • GetSystemMetrics(SM\u CYSCREEN)

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

至于FMX,没有多监视器支持,也没有独立于平台的方法来确定屏幕大小指标。在您的情况下,我只需使用
Screen.Monitors[]
,并在您到达时处理FMX端口。当您移植到FMX时,您将不得不重新编写所有GUI代码,而这个问题是您最不担心的

最后,当你说

我想在代码中添加占位符,以便在将其移植到XE2时使用


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

如果您只需要主显示器的大小,而不需要桌面显示器的大小(n个显示器的总和),您可以使用:

uses ..., FMX.Platform;


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

我正在创建一个文件初始化例程。我想要SM_CXSCREEN和SM_CYSCREEN的唯一原因是,如果尚未创建INI文件,则为其设置值。我可以选择任意值,但我想将主屏幕设置为主监视器的80%。好的,在这种情况下,
SM_CXSCREEN
是合理的。另一方面,为什么还要麻烦初始化一个首选项的ini文件呢。如果ini文件不存在,则创建默认值。然后在应用程序关闭时保存首选项。这样,您就不必编写特殊的代码来初始化它,而且它可以很好地进行删除。但这是离题的。@CapeCodGunny:同意David处理ini文件的方法。只需确保从ini文件读取的所有值都使用正确的默认值,最好是来自某个mydefaultconsts.pas单元的常量。这样,您对所有值都是安全的,即使有人手动创建ini文件,但并非所有值都已设置。@Marjan-同意,我们在同一页上。我正在使用一个名为IniFileStuff.pas的单元,它内置了deafults。最初,我把屏幕默认设置为80%的SM_CXSCREEN和SM_CYSCREEN,但我更喜欢85%。刚才在我的博客上给了你一个叫喊。。。