0

同じフォームのいくつかを使用する 2 つのアプリケーションがあります。アプリケーションを実行すると、これらのフォームの表示が異なることに気付きました。このコードをプロジェクト ソースの先頭に配置します。

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 プロパティが読み取り専用であることを考えると、これを解決するのに途方に暮れています。

4

1 に答える 1

0

1 つのプログラムはDPI 仮想化の対象であり、もう 1 つのプログラムは対象外であるという説明が考えられます。システムには 150% のフォント スケーリングが指定されています。

真の解像度は 1920 x 1080 であり、aDAM3DPI 仮想化の対象ではないため、それを報告しています。

一方、aDAM2DPI 仮想化の対象となるため、実際の寸法を 1.5 で割った仮想化された寸法がレポートされます。つまり、1280 x 720 です。

于 2017-05-26T13:35:47.917 に答える