AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi 11 mit High DPI -> Formulare werden doppelt skaliert
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

Ein Thema von Friday · begonnen am 16. Sep 2021 · letzter Beitrag vom 31. Okt 2021
Antwort Antwort
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#1

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 17. Sep 2021, 07:26
der springende Punkt, bzw. Einstellung ist:
ParentFont := false Ist das True wird alles normal angezeigt, bei false übertrieben hoch skaliert. Ich habe in dem Beispielprojt Größe 9, also Standard belassen.

Beispielprojekt im Anhang
Angehängte Dateien
Dateityp: zip GDI-Scaling.zip (3,26 MB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 17. Sep 2021, 08:26
Nur um das richtig einzuordnen: Die Darstellung im Designer ist OK, aber die daraus erzeugte Exe zeigt das Problem?

Ich bin etwas irritiert weil Toolbar1.Height = 65, aber Toolbar1.ButtonHeight = 75 ist. Das ist aber schon in der Original-DFM so.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 17. Sep 2021, 08:52
genau im Formular-Designer wird es korrekt angezeigt.

Die Toolbar hab ich nur schnell hingeklatscht ohne die Höhen zu überprüfen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 17. Sep 2021, 09:42
Leg doch bitte mal eine Kopie der Vcl.Forms.pas in dein Projektverzeichnis (da wo die dpr liegt). Dann ändere die Zeilen 4352 bis 4356 mal so ab, dass die Schleife nicht über Controls sondern über Components geht.

vorher:
Delphi-Quellcode:
        for var I := 0 to ControlCount - 1 do
        begin
          TControlClass(Controls[I]).ChangeScale(FCurrentPPI, FCurrentPPI, True);
          TControlClass(Controls[I]).ScalingFlags := ScalingFlags;
        end;
nachher:
Delphi-Quellcode:
        for var I := 0 to ComponentCount - 1 do
        begin
          if not (Components[I] is TControl) then Continue;
          TControlClass(Components[I]).ChangeScale(FCurrentPPI, FCurrentPPI, True);
          TControlClass(Components[I]).ScalingFlags := ScalingFlags;
        end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 17. Sep 2021, 12:56
ja das scheint das Problem zu beheben.

Danke
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
578 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 21. Okt 2021, 23:41
Ich probiere gerade Delphi 11 so ein bisschen aus und wollte es wegen des geschilderten Problems schon wieder löschen, bevor ich auf Uwes genialen Ratschlag kam. Ich wundere mich, dass man nicht mehr Hilferufe findet und Uwes Lösung augenscheinlich nur hier und sonst nirgendwo.
Vielleicht auch noch ein paar Worte, warum "Component" das Problem löst?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 22. Okt 2021, 00:11
Vielleicht auch noch ein paar Worte, warum "Component" das Problem löst?
Die Liste der Controls liefert nur die Controls, deren Parent das Form ist. Components liefert alle Components, deren Owner das Form ist. Ein Button in einem Panel wird somit von Controls nicht erfasst, von Components aber schon.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
snet

Registriert seit: 26. Okt 2021
Ort: Losheim am See
1 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Delphi 11 mit High DPI -> Formulare werden doppelt skaliert

  Alt 29. Okt 2021, 17:40
Hallo in die Runde...
wenn ich mich nicht täusche, wurde die Problemlösung von Uwe Raabe heute durch ein Patch von Embacadero ausgerollt.

Die Lösung war für mich die Rettung im dpi skaling jungle...
Jörg
  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 23:48 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