如何在 4k 屏幕上将 Delphi 表格居中? (Windows 缩放已启用)- poScreenCenter 不工作

How to center a Delphi form on a 4k screen? (Windows scaling enabled) - poScreenCenter not working

我有一个 Delphi 表单作为启动画面(即无边框),我希望它恰好出现在(主)屏幕的中央(当前使用 TForm1.Position := poScreenCenter 来实现这个)。

这不适用于带缩放功能的 4k 显示器(或者在 Windows 中使用百分比高于 100% 的任何屏幕(设置 > 显示 > 缩放和布局))。在这种情况下,表单将在左上角 more 而不是屏幕的正中间弹出。这似乎是 Delphi 中与 HiDPI 相关的错误,因为该程序在其他方面看起来都很好并且运行良好。

我的猜测是我必须将 TForm1.Position 设置为 poDesigned 并在 OnShow 事件中手动设置 TForm1.Top 和 Left。问题是:为了什么?什么是确保表单始终出现在确切屏幕中心的通用解决方案,无论显示器尺寸/分辨率/缩放比例等如何。我偶然发现了一个名为“muldiv”的函数可能会有帮助,但我不确定如何使用它。

我有:

感谢您的帮助。

要使表格居中,请使用此代码:

Form1.Left := (Form1.Monitor.Width  - Form1.Width)  div 2;
Form1.Top  := (Form1.Monitor.Height - Form1.Height) div 2;

当然你可以检查窗体是否比显示器大