AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dpi Awareness und Windowsskalierung

Ein Thema von Manfred D2009 · begonnen am 16. Aug 2016 · letzter Beitrag vom 18. Aug 2016
Antwort Antwort
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Dpi Awareness und Windowsskalierung

  Alt 16. Aug 2016, 17:43
Hallo,

ich verwende die Version Delphi Berlin um eine bestehende Anwendung dpi-aware zu machen. Die Skalierungseinstellungen von Windows werden ja jetzt weitestgehend berücksichtigt

Da die Kombination der Windowseinstellung und des verwendeten Monitors manchmal für meine Anwendung nicht optimal aussieht, andere Anwendungen aber ganz passabel ausschauen, würde ich gerne meine Anwendung eine Stufe größer oder auch mal kleiner als den Windowsstandard haben.

Gibt es eine Möglichkeit wie man eine Anwendung zusätzlich skaliert, ohne dass die Windowseinstellungen verändert werden müssen und ohne dass andere Programme beeinflusst werden?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dpi Awareness und Windowsskalierung

  Alt 17. Aug 2016, 07:30
Hast du es einmal mit ScaleBy versucht? Eine ausführliche Übersicht findest du in der Doku:
http://docwiki.embarcadero.com/RADSt...Steuerelemente
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Dpi Awareness und Windowsskalierung

  Alt 17. Aug 2016, 08:57
Die Routine ScaleBy habe ich anfangs kurz ausprobiert, habe diesen Ansatz aber bald wieder verworfen, da hier dann doch noch für mich zu viele Details zu berücksichtigen wären wie z.B. die Größenanpassungen und Positionierungen der Controls.

Die Skalierung eines Formulars beim Einlesen (also vor dem Loaded) funktioniert seit Berlin ja eigentlich sehr gut. Gäbe es nicht da eine Möglichkeit einzugreifen?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Dpi Awareness und Windowsskalierung

  Alt 17. Aug 2016, 13:33
Diese wird mit ScaleBy gemacht.

Was du versuchst wurde in diesem Thread besprochen:
http://www.delphipraxis.net/189715-s...ie-helper.html

Einen Bug gibt es da auch noch:
http://www.delphipraxis.net/189426-d...gecontrol.html
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Dpi Awareness und Windowsskalierung

  Alt 18. Aug 2016, 11:20
Das Setzen der PixelsPerInch über die Helperklasse funktioniert für meine Formulare recht ordentlich. Bei einem Mehrbildschirmsystem wird für die Skalierung allerdings die Einstellung der einzelnen Monitore verwendet.

Ich habe in der Zwischenzeit mal die Methode ScaleForPPI für meine Formulare überschrieben. Dort kann ich eine neue Auflösung mitgeben, was für meine Anforderung gut funktioniert. Jetzt habe ich aber noch ein aktuelles Problem beim Verschieben eines Formulars von einem Monitor auf einen anderen, der eine andere Auflösung hat. Da wird über die WMDpiChanged Botschaft eine Skalierung gemacht, die ich nicht so einfach manipulieren kann.

Gibt es da evtl. eine Möglichkeit?
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:35 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