Разработчики, сталкивающиеся с необходимостью использования современных диалоговых окон в своих VCL приложениях на Delphi, могут столкнуться с проблемой неотображения TaskDialog. Эта проблема актуальна для тех, кто переходит на использование TTaskDialog из более старых диалоговых окон, таких как ShowMessage, MessageDlg и MessageBox.
Описание проблемы
Пользователь, использующий Delphi 10.4, столкнулся с тем, что TaskDialog не отображается в его приложении после попытки перехода на использование новых диалогов. В минимальном примере приложения, где был добавлен кнопка и TTaskDialog, диалог отображался корректно. Однако, при интеграции TTaskDialog в основное приложение, после отображения стандартных диалогов, TaskDialog перестал отображаться.
Подтвержденное решение
Решением проблемы является активация темы выполнения для TTaskDialog. Это можно сделать через меню Project/Options/Application/Manifest в среде разработки Delphi.
Комментарии
Стоит проверить, возникает ли та же проблема при прямом вызове Win32 API функций TaskDialog() или TaskDialogIndirect(). В случае их неудачного выполнения, будет возвращен код ошибки HRESULT, указывающий на причину сбоя. Если же API функции работают корректно, но TTaskDialog нет, это может быть связано с ошибкой в компоненте TTaskDialog в версии Delphi 10.4.
Пример кода
Для активации темы выполнения в файле проекта (.dproj) необходимо добавить следующий код в раздел <Application>:
Этот код активирует поддержку темы выполнения, что необходимо для корректной работы TTaskDialog.
Заключение
При переходе на использование TTaskDialog важно убедиться, что тема выполнения включена в настройках проекта. Это позволит обеспечить корректное отображение диалогового окна в приложениях, созданных с использованием Delphi 10.4 и VCL.
Проблема заключается в том, что в VCL приложении на Delphi 10.4 не отображается `TaskDialog` из-за отсутствия активированной темы выполнения для `TTaskDialog`, и решение состоит в её включении через настройки проекта.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS