RAD Studio More VCL Support for Windows 11

ADSoft

Местный
Регистрация
1 Окт 2007
Сообщения
223
Реакции
86
Credits
1,089
More VCL Support for Windows 11
With the official release of Windows 11 , Embarcadero has made available some specific VCL styles and I'm offering some coding helpers specific to the new version of the Microsoft desktop OS. More will come over time.

After the announcement earlier this year, Microsoft has now officially released Windows 11 last week. Despite some issues running the new operating system on older computers due to new hardware requirements, the new version of Windows offers a nicer user experience and working environment, while maintaining a very high degree of compatibility with existing applications, including those written with Delphi and C++Builder. We are expecting a lot of end users will move to Windows 11 in the coming months.
In this blog post, I don't want to focus on Windows 11 and its renewed user experience, but rather on how you can further improve your VCL applications to make them first class citizen in the new OS. In general terms, there are many modernization techniques Delphi and C++Builder offer to better fit with recent versions of Windows, from the use of VCL styles to the adoption to the many new VCL controls introduced over recent years (up to the ControlList and the NumberBox controls in RAD Studio 10.4.2 and the revamped RichEdit in RAD Studio 11 Alexandria).
Let's focus on Windows 11 specific support, going even further than general migration suggestions and ideas. Windows 11 ships with the WebView2 controls, so this is a great time for adopting Для просмотра ссылки Войди или Зарегистрируйся over the TWebBrowser component. Also, Microsoft keeps focusing on packaged apps and the Microsoft Store, two capabilities you can achieve via RAD Studio IDE support for the MSIX deployment format. These features are in the current version of RAD Studio 11 (and were there even earlier).

New Windows 11 VCL Styles​

What we have released yesterday and is now available in GetIt is a set of two new VCL styles specific to Windows 11, for light and dark mode. Type "Windows 11" in the search bar to locate them quickly:
win11_stylesingetit.png

Once you have installed the two styles, you can open a VCL project settings, go the Appearance page, add the styles to the application and (if you have enabled the use of VCL styles at design time), pick them in the StyleName property of a form to preview them at design time, like in the image below. Notice, among other elements, the modern style thin scrollbars in the list box.
win11_stylesindesigner.png

We do have some more "official" images of the two styles below, where you can see additional rounded element and colors matching the new platform defaults.
Windows11Light.png

Windows11Dark.png

Windows 11 Rounded Corners​

One of the most visible elements of Windows 11 is the use of "rounded UI elements", starting with the rounded form corners. If you create a brand new VCL application with no special configuration or setting and run it on Windows 11, you should see rounder corners for forms by default. However, this is a feature you have full control onto using a specific, public Windows API call Для просмотра ссылки Войди или Зарегистрируйся:
Код:
Winapi.Dwmapi.DwmSetWindowAttribute(Handle, DWMWA_WINDOW_CORNER_PREFERENCE,
@CornerPreference, sizeof(CornerPreference));
To make it easier to use this API (already covered by Для просмотра ссылки Войди или Зарегистрируйся in a detailed blog post titled "Для просмотра ссылки Войди или Зарегистрируйся"), I wrote an interposer helper class with similar code, available on GitHub at:
Для просмотра ссылки Войди или Зарегистрируйся
You can see the interface section of the unit here:
win11_unitinterface.PNG

Just add this unit in the uses statement of the interface section of a form, after the Vcl.Forms unit, and your form will have a new class property indicating the default rounding and a new property for the specific form setting, so you can write:
Код:
TForm.DefaultRoundedCorners := rcOff; // set default for all forms
RoundedCorners := rcOn; // change the rounding for the current form
This code works only on Windows 11, as Windows 10 or previous versions ignore it (but don't raise any error). I used it in a simple demo (also at GitHub at Для просмотра ссылки Войди или Зарегистрируйся) with the following UI:
win11_vclapp.png

Finally notice that VCL applications, including those that use the custom VCL TitleBar offer support for Для просмотра ссылки Войди или Зарегистрируйся out of the box:
win11_snap.png

One Small Issue and More to Come​

As I mentioned earlier, VCL applications generally work fine on Windows 11. There is one issue with the coloring of menu items with associated images, given the platform uses a different set of default colors a VCL application doesn't fully respect. This has been reported at QP Для просмотра ссылки Войди или Зарегистрируйся. While there is a workaround in the Quality Portal report, we are planning to offer a fix for RAD Studio 11 for this issue shortly.
We are planning some further Windows 11 related improvements and demos of new features in the coming months and in the future RAD Studio 11.1 release. Stay tuned.

Build Applications for Windows 11 with VCL​

It is not a mystery that Embarcadero used version 11 for the last release of RAD Studio to tie it with Windows 11. With all of the changes in UI libraries that Microsoft own tools underwent in recent years, I am certain that the broadness of API support and platform integration offered by the VCL library in Delphi and C++Builder is unparalleled by Microsoft Visual Studio or any third party set of tools. Microsoft has been clearly indicating native Windows development is and remains key (see Windows App SDK, aka Project Reunion) and remains the mainstream option, but their libraries in this space (like MFC and WinForms) are not on par with VCL and lag behind their own platform features.
The VCL library, with its ability to map to classic and modern APIs (from Win API, to COM-based APIs, to WinRT) and its support for High DPI monitors and modern UI trends -- all without requiring a full application rewrite -- is unique in the Windows desktop development scenario and clearly stands out for its power. For Windows 11 development, the Visual Component Library is the way to go.