С официальным выпуском Windows 11 компания Embarcadero сделала доступными некоторые специфические стили VCL, и я предлагаю несколько помощников по кодированию, специфичных для новой версии настольной ОС Microsoft. Со временем будет больше.
После объявления в начале этого года Microsoft на прошлой неделе официально выпустила Windows 11. Несмотря на некоторые проблемы с запуском новой операционной системы на старых компьютерах из-за новых требований к оборудованию, новая версия Windows предлагает более приятный пользовательский интерфейс и рабочую среду, сохраняя при этом очень высокую степень совместимости с существующими приложениями, в том числе написанными на Delphi и C. ++ Строитель. Мы ожидаем, что в ближайшие месяцы многие конечные пользователи перейдут на Windows 11.
В этом сообщении в блоге я хочу сосредоточиться не на Windows 11 и ее обновленном пользовательском интерфейсе, а на том, как вы можете еще больше улучшить свои VCL-приложения, чтобы сделать их первоклассными гражданами в новой ОС. В общих чертах, существует множество методов модернизации, которые Delphi и C ++ Builder предлагают для лучшего соответствия последним версиям Windows, от использования стилей VCL до принятия многих новых элементов управления VCL, представленных в последние годы (вплоть до ControlList и элементы управления NumberBox в RAD Studio 10.4.2 и обновленный RichEdit в RAD Studio 11 Alexandria).
Давайте сосредоточимся на поддержке Windows 11 и пойдем дальше, чем общие предложения и идеи по миграции. Windows 11 поставляется с элементами управления WebView2, поэтому сейчас самое время использовать TEdgeBrowser вместо компонента TWebBrowser. Кроме того, Microsoft продолжает уделять внимание пакетным приложениям и Microsoft Store — двум возможностям, которые вы можете реализовать с помощью поддержки RAD Studio IDE для формата развертывания MSIX. Эти функции есть в текущей версии RAD Studio 11 (и были там даже раньше).
Table of Contents
Новые стили Windows 11 VCL
То, что мы выпустили вчера и теперь доступно в GetIt, — это набор из двух новых стилей VCL, специфичных для Windows 11, для светлого и темного режима. Введите «Windows 11» в строку поиска, чтобы быстро найти их:
После того, как вы установили два стиля, вы можете открыть настройки проекта VCL, перейти на страницу Внешний вид, добавить стили в приложение и (если вы включили использование стилей VCL во время разработки) выбрать их в свойстве StyleName для форма для предварительного просмотра во время разработки, как на изображении ниже. Обратите внимание, помимо других элементов, на тонкие полосы прокрутки в современном стиле в списке.
У нас есть еще несколько «официальных» изображений двух стилей ниже, где вы можете увидеть дополнительный закругленный элемент и цвета, соответствующие новым настройкам платформы по умолчанию.
Windows 11 с закругленными углами
Одним из наиболее заметных элементов Windows 11 является использование «закругленных элементов пользовательского интерфейса», начиная с закругленных углов. Если вы создаете новое приложение VCL без специальной конфигурации или настроек и запускаете его в Windows 11, вы должны увидеть более закругленные углы для форм по умолчанию. Однако это функция, которую вы полностью контролируете, используя конкретный общедоступный вызов Windows API DwmSetWindowAttribute :
1 2 |
Winapi.Dwmapi.DwmSetWindowAttribute(Handle, DWMWA_WINDOW_CORNER_PREFERENCE, @CornerPreference, sizeof(CornerPreference)); |
Чтобы упростить использование этого API (уже описанного Яном Баркером в подробном сообщении в блоге под названием « Как управлять скругленными углами Windows 11 в вашем приложении »), я написал вспомогательный класс интерпозера с аналогичным кодом, доступный на GitHub по адресу:
https://github.com/marcocantu/DelphiSessions/blob/master/Win11_Delphi11/Win11Round/Win11Forms.pas
Вы можете увидеть раздел интерфейса устройства здесь:
Просто добавьте этот модуль в оператор uses раздела интерфейса формы после модуля Vcl.Forms, и ваша форма будет иметь новое свойство класса, указывающее округление по умолчанию, и новое свойство для конкретного параметра формы, чтобы вы могли написать :
1 2 |
TForm.DefaultRoundedCorners := rcOff; // set default for all forms RoundedCorners := rcOn; // change the rounding for the current form |
Этот код работает только в Windows 11, поскольку Windows 10 или предыдущие версии игнорируют его (но не вызывают никаких ошибок). Я использовал его в простой демонстрации (также на GitHub по адресу https://github.com/marcocantu/DelphiSessions/tree/master/Win11_Delphi11/Win11Round ) со следующим пользовательским интерфейсом:
Наконец, обратите внимание, что приложения VCL, в том числе те, которые используют настраиваемую VCL TitleBar, предлагают поддержку Snap Layouts из коробки:
Одна небольшая проблема и еще не все
Как я упоминал ранее, приложения VCL обычно нормально работают в Windows 11. Есть одна проблема с раскрашиванием пунктов меню с соответствующими изображениями, поскольку платформа использует другой набор цветов по умолчанию, которые приложение VCL не полностью поддерживает. Об этом сообщается на QP https://quality.embarcadero.com/browse/RSP-35049 . Хотя в отчете о портале качества есть обходной путь, мы планируем в ближайшее время предложить исправление для этой проблемы в RAD Studio 11.
Мы планируем дальнейшие улучшения, связанные с Windows 11, и демонстрации новых функций в ближайшие месяцы и в будущем выпуске RAD Studio 11.1. Будьте на связи.
Создавайте приложения для Windows 11 с помощью VCL
Не секрет, что Embarcadero использовал версию 11 для последнего выпуска RAD Studio, чтобы связать его с Windows 11. Со всеми изменениями в библиотеках пользовательского интерфейса, которые собственные инструменты Microsoft претерпели за последние годы, я уверен, что широкая поддержка API а интеграция платформы, предлагаемая библиотекой VCL в Delphi и C ++ Builder, не имеет аналогов в Microsoft Visual Studio или любом другом наборе инструментов сторонних производителей. Microsoft четко указала, что собственная разработка для Windows является и остается ключевой (см. Windows App SDK, также известный как Project Reunion) и остается основным вариантом, но их библиотеки в этом пространстве (например, MFC и WinForms) не соответствуют VCL и отстают от своих особенности собственной платформы.
Библиотека VCL с ее способностью сопоставляться с классическими и современными API-интерфейсами (от Win API до API-интерфейсов на основе COM, с WinRT), а также поддержка мониторов с высоким разрешением DPI и современных тенденций пользовательского интерфейса — и все это без необходимости полного переписывания приложения — является уникальной. в сценарии разработки для настольных компьютеров Windows и явно выделяется своей мощью. Для разработки под Windows 11 лучше всего подойдет библиотека визуальных компонентов.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition