我有一个Delphi表单,用作一种启动屏幕(即无边框),我想准确地显示在(主)屏幕的中心(当前使用TForm1.Position:= poScreenCenter来实现此目的)。
在具有缩放比例的4k显示器上(或在Windows中使用百分比大于100%的任何屏幕(“设置”>“显示”>“缩放比例和布局”),此功能均不起作用)。在这种情况下,该窗体将在屏幕的左上角而不是在屏幕的确切中间弹出更多。这似乎是Delphi中与HiDPI相关的错误,因为该程序看起来还不错并且可以很好地运行。
我的猜测是我必须将TForm1.Position设置为poDesigned,并在OnShow事件中手动设置TForm1.Top和Left。问题是:要做什么?确保显示器始终出现在精确的屏幕中心的通用解决方案,而不管显示器的尺寸/分辨率/缩放比例如何。我偶然发现了一个名为“muldiv”的功能,该功能可能会有所帮助,但我不确定如何用它。
我有:

  • Delphi 10.3版本26.0.36039.7899
  • Windows 10版本20H2
  • DPI意识(项目>选项>应用程序> list )设置为“系统感知”
  • TForm1.Scaled设置为“True”
  • TForm1.PixelsPerInch设置为“96”
  • TForm1.FormStyle设置为“fsStayOnTop”
  • TForm1.BorderStyle设置为“bsNone”
  • TForm1.Position设置为“poScreenCenter”
  • TFrom1.DefaultMonitor设置为“dmActiveForm”
  • TForm1.Width和Height都设置为“480”

  • 谢谢你的帮助。

    最佳答案

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

    Form1.Left := (Form1.Monitor.Width  - Form1.Width)  div 2;
    Form1.Top  := (Form1.Monitor.Height - Form1.Height) div 2;
    
    当然,您可以检查表格不大于监视器。

    关于windows - 如何在4k屏幕上居中放置Del​​phi表单? (启用Windows缩放)-poScreenCenter不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/65249092/

    10-15 05:19