New per-DPI awareness in VCL applications

by Sep 9, 2015

In RAD Studio 10 Seattle, we've added per-DPI awareness in the VCL. This means that, when moving a form from one monitor to another one that has different DPI, the VCL form and the controls will be rescaled according to the new DPI, with no specific coding needed (video included below).

As a testing scenario, and for this demos: we've setup 3 monitors that have different DPIs:

Setup

After that, we ran a sample VCL application and the Visual Studio DPI Awareness Tutorial application side by side. No coding has been added to the VCL app to adapt the form and controls to the different DPIs, there's only code to get and show the monitor's settings.

As you can see in the following screenshots, the VCL window and controls are resized according to the DPI of the monitor where is placed (again, no code needed for this behavior). We've also used the sample application provided by Microsoft to ensure that everything behaved perfectly.

1st monitor: Scaling 100%

 

2nd monitor: scaling 125%

 

3rd monitor: scaling 150%

 

And back to 1st monitor

 

Bellow there's a video where you can see the application scaling in real-time with precision and no hiccups.
www.youtube.com/watch

 In this file you can find the source code for the Delphi application: DelphiDpiAware

And here it is the Microsoft entry for their testing app: https://code.msdn.microsoft.com/windowsapps/DPI-Tutorial-sample-64134744   and the compiled exe:  DPITutorial_exe_VS , please launch adding character p as paramter (to run the Visual Studio sample you may need to install the Visual C++ redistributable packages link: http://www.microsoft.com/en-US/download/details.aspx?id=40784).

An absolutely must have feature, now that is more frequent to find environments with monitors with different DPIs.