AGB  ·  Datenschutz  ·  Impressum  







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

ScaleFactor und Delphi 10.3 (VCL)

Ein Thema von Harry Stahl · begonnen am 23. Nov 2018 · letzter Beitrag vom 24. Nov 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#1

ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 18:16
OK, Delphi 10.3 hat eine neue Eigenschaft für die Form eingeführt, namens "Scalefactor".

Leider hatte ich schon eine eigene DPI-Aware Lösung entwickelt, mit einer Unit, die auch eine Variable namens "Scalefactor" definiert.

Ich benutzte eine Anwenderdefinierte Manifest-Datei, wo ich mit

<dpiAware>true</dpiAware>

die DPI-Aware-Option für das Programm aktiviere.

Wenn ich nun ein solches Programm kompiliere (und ich nicht selber den Wert für Scalefactor mit Systemfunktionen abfrage), ist Scalefactor unter Delphi 10.3 immer 1, auch wenn das Programm auf einem hochauflösenden Monitor läuft.

Was muss ich unter Projekt-Optionen, Manifest, einstellen, damit mir Scalefactor den richtigen Wert liefert (im vorliegenden Fall müsste es 1,25 sein)?

Ich habe automatisch erzeugen versucht und egal, was ich bei DPI-Unterstützung probiere, immer ist Scalefactor = 1

Was mache ich hier falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 18:40
Was muss ich unter Projekt-Optionen, Manifest, einstellen, damit mir Scalefactor den richtigen Wert liefert (im vorliegenden Fall müsste es 1,25 sein)?
Versuch doch mal "DPI-Unterstützung - Über Monitor v2".
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 22:18
MeinForm.ScaleFactor und auch DeinForm.Scalefactor gibt leider 1 zurück.

Aber für die Controls auf dem Form stimmt der Wert.

Klick mal einen Button auf dein Form:

Delphi-Quellcode:
procedure TForm82.Button1Click(Sender: TObject);
begin
  showmessage( button1.scalefactor.ToString );
end;
Da wird dir dein Programm die von dir erwarteten 1.25 zurückgeben.


Und wenn du dein Form mittels changescale( 5, 2 ); skalierst, wird dein Form und damit auch dein Button mit 5/2=2.5 skaliert.

button1.scalefactor wird dann 1.25*5/2=3.125 zurückgeben.

DeinForm.Scalefactor ist immer noch 1. (Irgendwie stimmt das ja auch ein wenig, da die Titelzeile des Formulars ja beim Skalieren nicht grösser oder kleiner wird .)
Michael Gasser
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 22:45
Wegen dieser überkomplizierten Scale-Sache halte ich mich persönlich davon einfach fern und stelle Scaled auf False.
Kann es denn nicht einfach eine Lösung geben für die man kein Mathe studiert haben muss damit es funktioniert?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 23:11
Ich vermute mal, daß es sich hier einfach um ein Versäumnis handelt. Ein TForm reagiert anders auf Scaling als die darin enthaltenen Controls (und das muss auch so sein). Offenbar hat man bei Einführung der ScaleFactor Eigenschaft vergessen diese auch in TForm.ChangeScale zu aktualisieren. Ich habe mir mal erlaubt, dafür einen Bugreport zu schreiben: ScaleFactor never changes for TForm

Wofür benötigst du denn diese Information?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 23:15
Kann es denn nicht einfach eine Lösung geben für die man kein Mathe studiert haben muss damit es funktioniert?
Mit 10.3 funktioniert das Scaling auf unterschiedliche Monitor-DPI eigentlich schon ganz gut - auch ohne eigenes Zutun. Andererseits, ich habe tatsächlich Mathe studiert...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 23:22
Also Monitorv2 hat auch keine Auswirkung (auf den Scalefactor-Wert der Form)

Anhand des Skalierungsfaktors habe ich z.B. Zeilenhöhen von Grids, Listboxen, Fonts und Images je nach DPI angepasst.

Ich verwende jetzt erstmal "uDPIAware.Scalefactor" (eben den Scalefactor-Wert aus meiner Unit).

Wobei ich mir vieles von diesen Berechnungen nun anscheinend sparen kann, da Delphi das wohl selber schon macht (zumindest Listboxen, etc; bei Grafiken muss ich wohl noch selbst Hand anlegen). Aber schon mal eine super Arbeitserleichterung...

Geändert von Harry Stahl (23. Nov 2018 um 23:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 23. Nov 2018, 23:45
Wobei ich mir vieles von diesen Berechnungen nun anscheinend sparen kann, da Delphi das wohl selber schon macht (zumindest Listboxen, etc; bei Grafiken muss ich wohl noch selbst Hand anlegen). Aber schon mal eine super Arbeitserleichterung...
Mit der TVirtualImageList wird es auch alles etwas leichter. Die kümmert sich je nach Verfügbarkeit um die Auswahl der passenden Größe oder skaliert das Bildchen entsprechend selbst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#9

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 24. Nov 2018, 00:22
Zitat:
Mit der TVirtualImageList wird es auch alles etwas leichter.
Ich habe kürzlich auf die PngImageList gewechselt. Hat die denn mit der TImageCollection noch einen Wert?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: ScaleFactor und Delphi 10.3 (VCL)

  Alt 24. Nov 2018, 04:50
Zitat:
Mit der TVirtualImageList wird es auch alles etwas leichter.
Ich habe kürzlich auf die PngImageList gewechselt. Hat die denn mit der TImageCollection noch einen Wert?
Finde es doch heraus

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:44 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