Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Self.PixelsPerInch unterschiedliche Skalierung (https://www.delphipraxis.net/210635-self-pixelsperinch-unterschiedliche-skalierung.html)

lxo 20. Mai 2022 15:23

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.

Uwe Raabe 20. Mai 2022 15:37

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?

lxo 20. Mai 2022 15:53

AW: Self.PixelsPerInch unterschiedliche Skalierung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1506116)
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?

- Per Monitor V2
- 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

himitsu 20. Mai 2022 16:00

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;

Uwe Raabe 20. Mai 2022 16:22

AW: Self.PixelsPerInch unterschiedliche Skalierung
 
Zitat:

Zitat von lxo (Beitrag 1506118)
- Welche Form-Designer Einstellung ist damit gemeint?

Tools - Optionen - Benutzeroberfläche - Formular-Designer - High DPI

lxo 20. Mai 2022 18:29

AW: Self.PixelsPerInch unterschiedliche Skalierung
 
Zitat:

Zitat von himitsu (Beitrag 1506119)
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;

Mit HighDPI Per Monitor V2 aktualisiert sich aber doch PixelPerInch.
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.

lxo 20. Mai 2022 18:31

AW: Self.PixelsPerInch unterschiedliche Skalierung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1506123)
Zitat:

Zitat von lxo (Beitrag 1506118)
- Welche Form-Designer Einstellung ist damit gemeint?

Tools - Optionen - Benutzeroberfläche - Formular-Designer - High DPI

Da hab ich alles auf Standard nichts geändert, aber das sollte doch kein Unterschied machen bei meiner Problemstellung.

hoika 23. Mai 2022 05:39

AW: Self.PixelsPerInch unterschiedliche Skalierung
 
Hallo,
FormActivate?

Uwe Raabe 23. Mai 2022 12:11

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 12:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz