Ja, unter FMX ist das mit DPI-Aware noch einmal ein anderes Thema.
Grundsätzlich ist die Voreinstellung ab Seattle so, dass die Programme DPI-Aware sind. Nur geschieht das hier im Gegensatz zur
VCL bei den meisten Komponenten nicht automatisch, sondern man muss sich selber drum kümmern.
Hier gibt es zwei Wege, einen einfachen, aber mit nicht zufriedenstellenden Ergebnissen und einen aufwändigen, mit guten Ergebnissen:
1. Weg: Du legst alle Deine Komponenten in ein TLayout und sklaierst das TLayout entsprechend der DPI-Werte. Du kannst das selber mal testen: Setze im Controls-Demo bei der "ScaleTrack"Komponente den Max-Wert einmal auf "2". Wenn Du dann neu kompilierst und das Programm auf den 150 DPI-Monitor ausführst, ziehst Du die Trackbar auf 150, dann stimmt alles von der Größe her.
Leider sind hier aber seit langem Bugs drin, die immer noch nicht behoben sind: Bei einigen Komponenten treten Teile der Komponente aus dem Rahmen heraus, was nicht gut aussieht. Oder viele Komponenten zeigen feine Linien, was auf einen fehlerhaften Skalier-Algorhytmus zurückzuführen ist (vgl. Screenshot in der Anlage).
2. Weg: Du arbeitest umfangreich mit Alignments für die Komponenten und berechnest die Schriftgrößen und Größen der Elemente selber und weist die alle zur Laufzeit zu. Bei den Grafiken kommt FMX Dir entgegen, wenn Du im MultiResBitmap Grafiken mit unterschiedlichen Auflösungen hinterlegst. Da sucht das System dann automatisch das passende, je nach Auflösung raus.
Ich finde es sehr schade, dass der erste Weg nicht richtig funktioniert, für die viele Anwendungsfälle wäre das durchaus ausreichend, aber optisch ist es derzeit nicht akzeptabel.
Wie auch immer, Programme DPI-Aware zu machen, ist immer sehr viel Arbeit. Ich habe gerade meine wichtigsten
VCL-Programme DPI-Aware gemacht. FMX-Programme sind Anfang des nächsten Jahres dran (derzeit sind die nicht DPI-Aware, sondern werden von Windows skaliert, eben mit dem leichten Unschärfe-Ergebnis).