![]() |
Windows 10 und Scaled in Runtime
Wenn ich unter Windows 10 die dpi hochsetze
Einstellungen -> Anzeige -> Bildschirm/Anzeige anpassen -> Ändern der Größe von apps, Text und andere Elemente -> 150% und in Delphi die Form-Eigenschaft Scaled=True setze, wird das Fenster meiner Anwendung groß dargestellt. So möchte ich es auch haben. Meine Anwendung soll auch auf Monitoren mit hoher Auflösung gut erkennbar sein. Ich möchte dem Nutzer meiner Anwendung aber die Wahl lassen und habe eine CheckBox eingebaut, mit der man die Skalierung zur Laufzeit ein- und ausschalten kann. Leider funktioniert es zur Laufzeit nicht. Die Skalierung meiner Anwendung ändert sich nur, wenn ich zur Entwurf-Zeit im Object Inspector Scaled auf True bzw. False setze, meine Anwendung neu kompiliere und neu starte. Selbst ein Form1.Scaled:=true bzw. Form1.Scaled:=false in TForm1.FormCreate wird nicht berücksichtigt. Windows 10 schaut nur, was im Object Inspector steht... Hat jemand eine Idee, wie man die Anwendung dazu zwingt, sich zur Laufzeit neu zu skalieren? Im Manifest habe ich die Windows 10-ID hinzugefügt und auch dpiAware auf True gesetzt:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> <!-- Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!-- Windows 8 --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> </application> </compatibility> <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>True/PM</dpiAware> </asmv3:windowsSettings> </asmv3:application> </asmv1:assembly> |
AW: Windows 10 und Scaled in Runtime
Zitat:
Die Eigenschaft Scaled hingegen wird von Delphi selbst benutzt. Und zwar meine ich bereits beim Laden des Formulars. Deshalb wird das im OnCreate nicht gehen, da das danach aufgerufen wird. Du kannst aber einfach den Konstruktor überschreiben und Scaled setzen bevor du den geerbten Konstruktor aufrufst. Das sollte gehen. |
AW: Windows 10 und Scaled in Runtime
Das ist zwar schon alt hier, ich habe aber nichts zum Thema gefunden.
vielleicht hilft es jemandem. nur im constructor Scaled setzen hat auch nicht funktioniert so funktioniert es bei mir z.B. Form1 := TForm1.Create(Application,False);
Delphi-Quellcode:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; type TScaled = (scaledDfm, scaledTrue, scaledFalse); TForm1 = class(TForm) private { Private declarations } XScaled: TScaled; protected procedure InitializeNewForm; override; public { Public declarations } constructor Create(AOwner: TComponent; AScaled: boolean); reintroduce; end; var Form1: TForm1; implementation {$R *.dfm} constructor TForm1.Create(AOwner: TComponent; AScaled: boolean); begin if AScaled then XScaled := scaledTrue else XScaled := scaledFalse; inherited Create(AOwner); // hier Scaled einstellen, ist schon zu spät end; procedure TForm1.InitializeNewForm; begin inherited; case XScaled of scaledTrue: Scaled := True; scaledFalse: Scaled := False; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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