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
Benutzerbild von Memnarch
Memnarch

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

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
 
#2

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
 
#3

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
 
#4

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
user69

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

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 12. Feb 2016, 15:13
OK, nach längerem test nun das ernüchternde Ergebnis: Delphi Zeichnet die Checkbox und Radiobox Images immer in der Größer der SystemDPI. Das betrifft nur das Image - nicht den text.

Wenn sich also eine App als per MonitorDPI Aware ausweist ist die Größer dieser Boxen auf Monitoren mit MinitorDPI immer Falsch.
Das führt so weit, dass z.b. bei 250% System DPI die Checkbox oder Radiobox auf einem 100% DPI 2 Monitor gar nicht mehr erkenntlich ist.

Kennt jemand eine Workaround?

Wie kann man per eigenen Code in das Zeichen eingreifen, ohne eine externe Komponente zu nutzen?

User69
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 12. Feb 2016, 16:13
Use the source Luke ähm User69. Da Du ja schon die Stellen gefunden hast wo falsch gezeichnet wird, mache es besser:

Mache deine eigenen Komponenten.
Leite von TCheckBox bzw. TRadioButton ab und überschreibe die Methoden die den Fehler enthalten mit einer korrigierten Fassung.

Funktioniert überschreiben nicht, dann kopiere jeweils den ganzen Quellcode der Komponente, vergib neue Namen und korrigiere die fehlerhaften Stellen.

Den Source von allen Komponenten zu haben, ist mit die beste Eigenschaft von Delphi.
  Mit Zitat antworten Zitat
user69

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

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 12. Feb 2016, 16:23
Genau da liegt mein Problem.
Ich kann den Source vom Zeichen der CheckBox nicht recht finden oder verstehen.

Sicher muss ich irgendwie Paint überschreiben, aber wie und an welcher stelle.
Wie hier schon gesagt wird macht das wohl Windows, und ich kann daher schlecht rausfinden, was Delphi Windows da falsch gibt.

Hast du Konkrete Ideen, wo ich das Paint finde?

Ingo
  Mit Zitat antworten Zitat
hoika

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

AW: High DPI Problem mit Checkbox/Radiobox in Delphi10Seattle

  Alt 12. Feb 2016, 17:46
Hallo,
also ich habe hier D2007 und XE4, da wird die CheckBox richtig (gross) dargestellt.
Ist das ein Seattle-Problem?

OK: Steht ja alles in #1 ...


Heiko
Heiko
  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 13:41 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