![]() |
TColorDlg und HiDPI - Gibt es eine Lösung?
Liste der Anhänge anzeigen (Anzahl: 1)
Auf Multimonitor-Systemen wo HIghDPI und normal DPI Monitore vorhanden sind, wird der TColorDialog falsch dargestellt, wenn er direkt auf dem Monitor ohne scaling erzeugt wird, bzw. dort hin bewegt wird.
Das sieht hier dann so aus, wie in der Anlage. Es gibt auch schon seit einiger Zeit eine QC-Meldung: ![]() Kennt jemand einen Work-Around hierfür? |
AW: TColorDlg und HiDPI - Gibt es eine Lösung?
OK, erledigt, habe hier einen Tipp gefunden, den man für alle CommonDialoge anwenden kann:
![]() Habe also das vor dem Tform als Type deklariert:
Delphi-Quellcode:
und in der Implementation das:
TColorDialog = class(Vcl.Dialogs.TColorDialog)
protected function TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool; override; end;
Delphi-Quellcode:
Zwar ist der Dialog auf dem Low_Moitor dann nicht highdpi, aber wenigstens sieht er anständig aus...
function TColorDialog.TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool;
var previousDpiContext: DPI_AWARENESS_CONTEXT; begin previousDpiContext := SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE); try Result := inherited TaskModalDialog(DialogFunc, DialogData); finally SetThreadDpiAwarenessContext(previousDpiContext); end; end; |
AW: TColorDlg und HiDPI - Gibt es eine Lösung?
Hat das nur Einfluss auf den gleich zu erstellenden Dialog, oder auch auf alle anderen bereits existierenden Fenster in diesem Thread?
Wir arbeiten auch vermehrt mit TaskDialogen, aber HighDPI ist aktuell eher noch für die ferne Zukunft vorgeplant. Wir hatten z.B. mal das Problem, dass der Dialog eines Scannertreibers (Fujitsu Paperstream) alle Fenster vom Program in der Auflösung/DPI permanent veränderte (bis zum Programmende). |
AW: TColorDlg und HiDPI - Gibt es eine Lösung?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
2) Dann habt Ihr die Anwendungen aber mit GDI-Skalierung erstellt oder? Denn andererseits sieht es unter Umständen recht gruselig bei den Kunden aus, wenn man auf HighDPI nicht testet... 3) Anmerkung: Das gleiche muss man übrigens auch mit dem FontDialog machen, sonst sieht es u.U. so wie in der Anlage aus... |
AW: TColorDlg und HiDPI - Gibt es eine Lösung?
Aktuell noch nichts eingestellt.
Programm aus Zeiten von DOS Delphi 7 Delphi XE bald Delphi 10.x/11 halbwegs fertig: Die DPROJs mit 10.4 neu erstellt, aber noch nichts in Richtung MonitorV2 umgestellt. Ich hatte unser Programm (XE) nur einmal probehalber unter 4K laufen lassen, mit 100% und auch mal 200%, aber nicht in Dialoge geschaut. :oops: Wenn du direkt vor einem 75" stehst, siehst'e dann schon die Pixel. Irgendwann wäre es aber bestimmt gut, das auf HighDPI umzustellen, drum schonmal die Frage. :) |
AW: TColorDlg und HiDPI - Gibt es eine Lösung?
Wenn Du nur eine Konstellation mit nur einem Monitor hast und der ist HighDPI, dann ist das i.d.R. nicht so ein großes Problem. Echt hakelig wird es, wenn Du mehrere Monitore hast, mit unterschiedlichen Auflösungen und nur ein Monitor HigDPI hat...
Auch wenn das letztlich ein ziemlicher Aufwand ist: GDI-Skalierte Programme auf HighDPI Monitore sehen doch ziemlich verwaschen aus, das ist nicht schön. Ein Bildbearbeitungsprogramm mit verwaschenen Grafiken, na, das geht wohl nicht... Übrigens: Ich habe insofern Glück, als dass ich die meisten meiner Programme inzwischen unter FMX laufen habe, da funktioniert das fast alles von alleine. Jedenfalls im Verhältnis zur VCL ist das kaum ein nennenswerter Aufwand... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 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