2017-05-26 6 views
0

J'ai deux applications qui utilisent certaines des mêmes formes. J'ai remarqué que ces formulaires s'affichaient différemment lorsque j'ai exécuté les applications. Je mets ce code en haut de la source du projet:Les dimensions de l'écran Delphi diffèrent sur deux applications sur la même machine ... comment résoudre?

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 a montré: aDAM2.Desktop TLHW: 0, 0, 720, 1280

aDAM3-screen.txt a montré: aDAM3 .Desktop TLHW: 0, 0, 1080, 1920

Je ne comprends pas comment cela se produit et je n'arrive pas à résoudre ce problème, d'autant plus que les propriétés de TScreen sont en lecture seule.

Répondre

0

L'explication probable est qu'un programme est soumis à DPI virtualization, l'autre ne l'est pas. Le système a une taille de police de 150% spécifiée. La vraie résolution est 1920 par 1080, et aDAM3 rapporte, parce qu'il n'est pas sujet à la virtualisation DPI. D'autre part, aDAM2 est sujet à la virtualisation DPI, et donc rapporte les dimensions virtualisées, qui sont les vraies dimensions divisées par 1.5. C'est 1280 par 720.

+0

Merci! Juste ce dont j'avais besoin pour y aller. – skippix