![]() |
Delphi-Version: 11 Alexandria
Self.PixelsPerInch unterschiedliche Skalierung
Problemstellung:
Ich hab zwei Monitore [Monitor 1 - 125% Skalierung] [Monitor 2 - 150% Skalierung] Im Create einer Form ändere ich Width und Height einiger Komponenten. Dafür benötige ich Self.PixelsPerInch. Wenn meine MainForm auf Monitor 1 (Hauptbildschirm) ist, bekomme ich auch beim FormCreate meines Forms den richtigen Wert für Self.PixelsPerInch. Wenn nun aber meine MainForm auf Monitor 2 ist, bekomme ich beim FormCreate meines Forms den Wert von Monitor 1 mit Self.PixelsPerInch, obwohl das Fenster auf Monitor 2 geöffnet wird. An welcher Stelle sollte ich am besten ansetzen? Ich hatte dran gedacht irgendwo bei Vcl.Forms.TCustomFrom.SetWindowToMonitor nur leider kann ich das nicht überschreiben. |
AW: Self.PixelsPerInch unterschiedliche Skalierung
Das zu müsste man noch ein paar Informationen haben:
Welche DPI-Unterstützung steht im Manifest der Applikation? Welches ist der Hauptmonitor unter Windows? Wie sind denn deine Form-Designer Einstellungen? Auf welchem Monitor liegt der Form-Designer? |
AW: Self.PixelsPerInch unterschiedliche Skalierung
Zitat:
- Monitor 1 - Welche Form-Designer Einstellung ist damit gemeint? TForm.Position ist z.B. auf poMainFormCenter - also auf welchem Monitor die IDE ist? Das macht keinen Unterschied |
AW: Self.PixelsPerInch unterschiedliche Skalierung
In der Standardeinstellung kümmert sich Windows um das Scalieren.
Intern bleibt die Scalierung gleich, also für dein Programm ändert sich nichts (intern bleibt die DPI unverändert) und Windows stellt das Fesnter nur größer/kleiner dar. Du könntest nachsehn ob und wann sich die DPI für dein Fenster ändern (Haltepunkt rein)
Delphi-Quellcode:
protected
procedure ChangeScale(M, D: Integer; isDpiChange: Boolean); override; |
AW: Self.PixelsPerInch unterschiedliche Skalierung
Zitat:
|
AW: Self.PixelsPerInch unterschiedliche Skalierung
Zitat:
Das Problem ist nur ich passe die Komponenten aktuell im FormCreate an. Wenn die Form erstmal sichtbar ist passt auch PixelPerInch. Nur ich weiß nicht ab wann mein Form auf den richtigen Monitor geht. Während des FormCreate und FormShow ist die Form von der Position noch auf Monitor 1. wenn es dann aber da ist ist es auf Monitor 2 und PixelPerInch passt auch. Obwohl das MainForm auf Monitor 2 ist und ich Position auf poMainFormCenter habe. Mir fehlt die richtige Stelle das ich meine Komponenten einmalig beim initialisieren anpasse und nicht öfter. |
AW: Self.PixelsPerInch unterschiedliche Skalierung
Zitat:
|
AW: Self.PixelsPerInch unterschiedliche Skalierung
Hallo,
FormActivate? |
AW: Self.PixelsPerInch unterschiedliche Skalierung
Was ich noch nicht verstanden habe: Warum musst du die Größen dieser Komponenten beim Create schon für den Monitor anpassen, auf dem das Form später angezeigt wird? Sollten die sich nicht automatisch auf den entsprechenden Monitor skalieren? Kannst du vielleicht mal ein Beispiel machen, mit dem das klar wird?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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