AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Self.PixelsPerInch unterschiedliche Skalierung

Self.PixelsPerInch unterschiedliche Skalierung

Ein Thema von lxo · begonnen am 20. Mai 2022 · letzter Beitrag vom 23. Mai 2022
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
257 Beiträge
 
Delphi 12 Athens
 
#1

Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 16:23
Delphi-Version: 11 Alexandria
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#2

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 16:37
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?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
257 Beiträge
 
Delphi 12 Athens
 
#3

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 16:53
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.010 Beiträge
 
Delphi 12 Athens
 
#4

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 17:00
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#5

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 17:22
- Welche Form-Designer Einstellung ist damit gemeint?
Tools - Optionen - Benutzeroberfläche - Formular-Designer - High DPI
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
257 Beiträge
 
Delphi 12 Athens
 
#6

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 19:29
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.

Geändert von lxo (20. Mai 2022 um 19:33 Uhr)
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
257 Beiträge
 
Delphi 12 Athens
 
#7

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 20. Mai 2022, 19:31
- 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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 23. Mai 2022, 06:39
Hallo,
FormActivate?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#9

AW: Self.PixelsPerInch unterschiedliche Skalierung

  Alt 23. Mai 2022, 13:11
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?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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