![]() |
Mit Delphi den Skalierungsfaktor herausfinden
Hallo,
ich habe mal wieder ein kleines Problem. Ich möchte mit Delphi herausfinden welche Skalierung in Windows (100%, 125%, 150%) eingestellt ist. Zumindest für den primären Monitor. Hat jemand eine Idee wie man das macht. LG Anni |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Ich hatte da mal das
![]()
Delphi-Quellcode:
Sherlock
function TPaintingGrid.SetScreenDPIandScale(const Context: TFmxObject = nil):
Boolean; var DeviceBehavior: IDeviceBehavior; DisplayMetrics: TDeviceDisplayMetrics; {$IFDEF ANDROID} dm: JDisplayMetrics; {$ENDIF} begin Result := False; {$IFDEF ANDROID} dm := GetJDisplayMetrics; if dm <> nil then begin fppi := dm.densityDpi; fScale := dm.scaledDensity; Result := True; exit; end; {$ENDIF} if TBehaviorServices.Current.SupportsBehaviorService(IDeviceBehavior, DeviceBehavior, Context) then begin DisplayMetrics := DeviceBehavior.GetDisplayMetrics(Context); fScale := DisplayMetrics.ScreenScale; fppi := DisplayMetrics.PixelsPerInch; // / (fScale * fScale); fScreenWidth := DisplayMetrics.LogicalScreenSize.Width; Result := True; end; end; |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Ab WIN8.1:
![]() GetScaleFactorForMonitor |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Super, ich danke euch. Ich werde das gleich mal probieren.
LG Anni |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Dies sollte auch gehen:
Delphi-Quellcode:
result := Round(Screen.PrimaryMonitor.PixelsPerInch*100/96); // ganze Prozent
Ist auch leicht auf alle Monitore zu erweitern. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
Ersatz:
Delphi-Quellcode:
Zeigt bei WIN8.1 richtig an: 100% bzw. 125%
caption:= INTTOSTR(ROUND(Screen.PixelsPerInch*100/96))+' %';
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Aber Vorsicht, die von t.roller genannte Funktion gibt es nicht ohne Grund. Ab Windows 8 kann jeder Monitor auch eine eigene Skalierung haben.
Die beiden Full HD 24" Monitore links und rechts haben bei mir z.B. 100%, der 27" QHD Monitor in der Mitte aber 125%. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
Delphi-Quellcode:
für jeden einzelnen Monitor abfragen.
Screen.Monitor[I]
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Hallo!
Ich kämpfe auch gerade mit dem Thema. Da ich auf D2007 festgenagelt bin, kann ich die neuen, monitorspezifischen APIs nicht (ohne Weiteres) nehmen. Aber wenn ich meine beiden Monitore (Laptop und extern) auf 125% gestellt habe, sollten Screen.PixelsPerInch und GetDeviceCaps(DC, LOGPIXELSX) doch 120 ergeben? Ich kriege aber bei beiden 96. Ich habe in Windows 10 die Einstellung "Größe von Text, Apps und anderen Elementen ändern" genommen - das ist die Variante, die sofort, ohne Neuanmeldung, wirkt. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz