【问题标题】:Delphi screen dimensions differ on two apps on same machine...how to resolve?Delphi屏幕尺寸在同一台机器上的两个应用程序上不同......如何解决?
【发布时间】:2017-05-26 13:05:14
【问题描述】:

我有两个使用相同表单的应用程序。我注意到,当我运行应用程序时,这些表单的显示方式有所不同。我把这段代码放在项目源码的最上面:

var f: TextFile;
s: String;

{$R *.res}

begin

s := TPath.GetFileNameWithoutExtension(Application.ExeName);
AssignFile(f, s + '-screen.txt');
Rewrite(f);
Writeln (f, s + '.Desktop TLHW: ' + IntToStr(screen.DesktopTop) + ', ' +
                                    IntToStr(screen.DesktopLeft) + ', ' +
                                    IntToStr(screen.DesktopHeight) + ', ' +
                                    IntToStr(screen.DesktopWidth));
CloseFile (f);

aDAM2-screen.txt 显示:aDAM2.Desktop TLHW:0、0、720、1280

aDAM3-screen.txt 显示:aDAM3.Desktop TLHW:0、0、1080、1920

我不明白这是怎么发生的,并且不知如何解决这个问题,尤其是考虑到 TScreen 属性是只读的。

【问题讨论】:

    标签: delphi-xe tform


    【解决方案1】:

    可能的解释是一个程序受DPI virtualization 约束,另一个不受。系统指定了 150% 的字体缩放。

    真正的分辨率是 1920 x 1080,aDAM3 正在报告这一点,因为它不受 DPI 虚拟化的影响。

    另一方面,aDAM2 受 DPI 虚拟化影响,因此报告虚拟化维度,即真实维度除以 1.5。即 1280 x 720。

    【讨论】:

    • 谢谢!正是我需要去做的事情。
    猜你喜欢
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多