AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle
Thema durchsuchen
Ansicht
Themen-Optionen

High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

Ein Thema von user69 · begonnen am 8. Feb 2016 · letzter Beitrag vom 20. Feb 2016
Antwort Antwort
user69

Registriert seit: 11. Dez 2004
115 Beiträge
 
#1

High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 8. Feb 2016, 22:25
Hallo,

Wenn man in Delphi10Seattle in Windows10 perMonitorDPI nutzt und eine Form mit Radiobuttons oder Checkboxen von Monitor1 (System DPI = 150%) auf den Monitor 2 (100 % DPI) verschiebt wird die Form ok skaliert. Leider werden dabei aber die Radiobuttons oder Checkboxen bei den 100% DPI oben abgeschnitten.
Siehe: SystemDPI144-Monitor2DPI100.png

Config2 - Monitor 1 wird auf 100% gesetzt (System DPI), Monitor 2 hat 150% scale:
Das ganze wird perfekt gezeichnet /skaliert, wenn man das Programm von Monitor 1 (System DPI = 100%) auf Monitor 2 (150% DPI) bewegt.
Siehe: SystemDPI100-Monitor2DPI144.png

Anbei auch der Source - Delphi10Seattle wird benötigt.

BTW:
Ich habe in der FormCreate - PixelsPerInch:= Monitor.PixelsPerInch ; gesetzt, um dem Bug von Delphi10Seattle Update1 zu umgehen.
Das Delphi Programm wurde unter 96 DPI erstellt.

Hat jemand eine Lösung, wie man die Checkboxen/Radioboxen korrekt zeichnen kann - also nicht abgeschnitten?
Evtl. irgendeine Delphi Source editieren - Vcl.Controls?

User69
Angehängte Grafiken
Dateityp: png SystemDPI100-Monitor2DPI144.png (24,5 KB, 76x aufgerufen)
Dateityp: png SystemDPI144-Monitor2DPI100.png (24,7 KB, 73x aufgerufen)
Angehängte Dateien
Dateityp: zip HighDPIForm-Source.zip (96,8 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
115 Beiträge
 
#2

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 10. Feb 2016, 09:03
Hm, da hier keiner antwortet, scheint mir, dass noch nicht sehr viele mit High DPI in Delphi arbeiten.

Ich versuchst mal anders:
Kann mir jemand sagen, wie (und wo, welche Unit, Zeile) die Checkboxen in Delphi 10 genau gezeichnet werden. Das konnte ich irgendwie trotz längerer Suche noch nicht verstehen. Ich nutze die normalen Runtime Styles von Windows 10.
Evtl kann ich dort ansetzen und was umschreiben.

User69
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 10. Feb 2016, 09:39
Warnung! Ich kenne mich mit der VCL im aktuellen Delphi nicht aus!
Sollte sich aber nichts geändert haben, werden die Checkboxen wie immer von Windows selber gezeichnet. Deswegen wirst du den source nicht finden, weils den nicht gibt
(Natürlich gibt es da noch den SKin/ThemeManager in Delphi aber wie sich das verhält weiß ich nicht)

Weißt sich die Anwendung im Manifest eigentlich auch als MonitorDPI-Aware aus?
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden

Geändert von Memnarch (10. Feb 2016 um 09:42 Uhr)
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
115 Beiträge
 
#4

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 10. Feb 2016, 09:44
OK, das erklärt, warum ich nichts rechtes gefunden habe.
Aber wo sind denn die Size-Berechnungen - die muss man Windows ja wenigstens mitteilen.
Mit scheint irgendwie die Größe der Checkbox selbst (nicht des Fonts) nicht zu stimmen.

User
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#5

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 10. Feb 2016, 09:51
Warnung Halbwissen
Ich kann mir nicht vorstellen, dass Windows die DPI-Zahl nicht bewusst ist. Es weiß ja wieviel DPI auf welchem Monitor gegeben sind. Vllt schießt da noch etwas anderes quer?
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
115 Beiträge
 
#6

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 11. Feb 2016, 10:40
Also nach einigem Probieren scheinen mir die Checkboxen und Radiobuttons zu groß zu sein, wenn die System DPI größer als 100% ist.

Bspl: System DPI 150% und auf dem 2. Monitor nur 100% (Programm perMonnitorDPI Aware). Die Größe der Checkboxen (reine Graphik) ist dabei dann zu groß und im „Normalfall“ oben abgeschnitten.

Ein Workaround, scheint zu sein, dass alle Checkboxen und Radioboxen eine Height = 20 erhalten (Standard ist 17). Dann werden sie nicht mehr abgeschnitten (zumindest bei 150% und 175% System DPI nicht – mehr hab ich noch nicht testen können). Die Größe ist dann aber immer noch größer als wenn die System DPI 100% wäre (unschön aber geht wohl nicht anders).

User69
  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 05:27 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 by Thomas Breitkreuz