如何在 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”的函数可能会有帮助,但我不确定如何使用它。
我有:
- Delphi10.3 版本 26.0.36039.7899
- Windows 10 版本 20H2
- DPI 感知(项目 > 选项 > 应用程序 > 清单)设置为“系统感知”
- TForm1.Scaled 设置为“真”
- TForm1.PixelsPerInch 设置为“96”
- TForm1.FormStyle 设置为“fsStayOnTop”
- TForm1.BorderStyle 设置为“bsNone”
- TForm1.Position 设置为“poScreenCenter”
- TFrom1.DefaultMonitor 设置为“dmActiveForm”
- TForm1.Width 和高度都设置为“480”
感谢您的帮助。
要使表格居中,请使用此代码:
Form1.Left := (Form1.Monitor.Width - Form1.Width) div 2;
Form1.Top := (Form1.Monitor.Height - Form1.Height) div 2;
当然你可以检查窗体是否比显示器大
我有一个 Delphi 表单作为启动画面(即无边框),我希望它恰好出现在(主)屏幕的中央(当前使用 TForm1.Position := poScreenCenter 来实现这个)。
这不适用于带缩放功能的 4k 显示器(或者在 Windows 中使用百分比高于 100% 的任何屏幕(设置 > 显示 > 缩放和布局))。在这种情况下,表单将在左上角 more 而不是屏幕的正中间弹出。这似乎是 Delphi 中与 HiDPI 相关的错误,因为该程序在其他方面看起来都很好并且运行良好。
我的猜测是我必须将 TForm1.Position 设置为 poDesigned 并在 OnShow 事件中手动设置 TForm1.Top 和 Left。问题是:为了什么?什么是确保表单始终出现在确切屏幕中心的通用解决方案,无论显示器尺寸/分辨率/缩放比例等如何。我偶然发现了一个名为“muldiv”的函数可能会有帮助,但我不确定如何使用它。
我有:
- Delphi10.3 版本 26.0.36039.7899
- Windows 10 版本 20H2
- DPI 感知(项目 > 选项 > 应用程序 > 清单)设置为“系统感知”
- TForm1.Scaled 设置为“真”
- TForm1.PixelsPerInch 设置为“96”
- TForm1.FormStyle 设置为“fsStayOnTop”
- TForm1.BorderStyle 设置为“bsNone”
- TForm1.Position 设置为“poScreenCenter”
- TFrom1.DefaultMonitor 设置为“dmActiveForm”
- TForm1.Width 和高度都设置为“480”
感谢您的帮助。
要使表格居中,请使用此代码:
Form1.Left := (Form1.Monitor.Width - Form1.Width) div 2;
Form1.Top := (Form1.Monitor.Height - Form1.Height) div 2;
当然你可以检查窗体是否比显示器大