Dazu muss man auch wissen, dass sich unter Windows diesbezüglich extrem viel geändert hat seit der Jahrtausendwende. Delphiversionen bis Delphi 7 stammen aus einer Zeit, in der es keine Skalierungstechniken unter Windows gab.
- Bei Windows XP kam dann die Möglichkeit zumindest die Schriftgrößen automatisch zu skalieren. Allerdings passten die Texte daraufhin oft nicht mehr in die vorgesehenen Anzeigeflächen, weil der Rest der Anwendung nicht skaliert wurde.
- Mit Windows Vista kam daher folgerichtig die Möglichkeit die Anwendung insgesamt zu skalieren. Dabei wurde aber lediglich das fertig gezeichnete Fenster als Bitmap skaliert. Und es gab auch nur bestimmte Skalierungsschritte (100%, 125%, ...). Wenn die Pixeldichte nicht sonderlich hoch ist, wie zu der Zeit üblich, sehen diese skalierten Oberflächen allerdings nicht so schön aus. (So wie eine hochskalierte Bitmap eben aussieht.)
Deshalb wurde dies standardmäßig deaktiviert und musste in der Anwendung aktiviert werden.
- Mit Windows 7 konnte man die reine Schriftartskalierung dann auch quasi stufenlos machen.
- Erst mit Windows 8 kam dann die monitorabhängige Skalierung, die allerdings von Windows automatisch vorgenommen wurde.
- Bei Windows 8.1 wurde dann die Umschaltung zur XP-Skalierungsmethode entfernt. Außerdem ist die Skalierung in alten Anwendungen nun anders als seit der Einführung in Vista automatisch aktiv. Vermutlich weil heute Monitore typischerweise eine relativ hohe Pixeldichte haben und das daher bei den meisten Nutzern nicht mehr so schlecht aussieht.
- Und seit Windows 10 kann man endlich auch manuell pro Monitor die Skalierung einstellen.
Ich hoffe ich habe nichts Wichtiges vergessen.
Seit Windows 10 und Delphi 10 Seattle funktioniert high-DPI wirklich sehr gut. Auch bei unterschiedlicher Pixeldichte und unterschiedlich eingestellter Skalierung pro Monitor wird klaglos beim Schieben eines Fensters von einem zum anderen Monitor skaliert.
Es gibt immer noch Kleinigkeiten, die noch gefixt werden müssten, sowohl in Windows als auch in Delphi, wobei manche davon als As-Designed gelten...
- Wenn man einen Monitor ausschaltet, klinkt Windows diesen auch aus, so dass alle Fenster auf die anderen Monitore geschoben werden. Dadurch verschieben sich allerdings auch die Monitornummern und Fensterkoordinaten, so dass gespeicherte Fensterpositionen nicht so wirklich gut funktionieren.
(Sidebars auf den falschen Monitoren, Fenster zudem plötzlich mitten auf dem Bildschirm, ...)
- Es passiert, dass wie bei der Felddefinition eines Datasets in Delphi das Fenster außerhalb des Bildschirmbereichs angezeigt wird. Das passiert auch bei der Suche manchmal.
Da helfen dann Tools wie der Window Detective, der auch zum Debuggen sehr hilfreich ist (Stichwort Windows Message Tracing), die die Fensterposition setzen können.
- Combobox Dropdowns sind in Delphi manchmal falsch skaliert, wenn man Delphi selbst auf einem Monitor mit einer Skalierung aktiv hat, eines der Fenster aber auf einem anderen mit einer anderen Skalierung.
Insgesamt funktioniert Windows 10 mit Delphi 10.1 Berlin auf der Kombination mit 27" 4k (120% Skalierung) und zweimal 24" FullHD (100% Skalierung) aber wirklich sehr gut, so dass ich mit den kleinen Problemen gut leben kann. Und wenn man sich anschaut, dass quasi in jeder Windowsversion und vielen Delphiversionen in den letzten Jahren Verbesserungen kamen, bin ich gespannt auf die nächsten Jahre.