Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Устранение Проблем с Отображением Внешних DLL Форм в Delphi 10.1 Berlin с VCL Styles

Delphi , Файловая система , DLL и PlugIns

 

При работе с внешними DLL в среде разработки Delphi 10.1 Berlin, разработчики могут столкнуться с проблемами отображения форм, использующих VCL Styles. Это может быть связано с неправильным отображением фона формы, изображений и элементов управления. В данной статье мы рассмотрим, как можно решить данную проблему, опираясь на пример использования библиотеки Nitgen DLL для записи отпечатков пальцев через COM-объект в NBSPCOM.dll.

Диагностика Проблемы

Пользователи сообщают, что при использовании VCL Styles в приложениях, собранных в Delphi 10.1 Berlin, формы из внешних DLL отображаются искаженно. Это проявляется в виде неправильного отображения фона формы, изображений и элементов управления. Интересный факт: если собрать приложение в Delphi XE8, то проблема исчезает, и все работает корректно. Это может указывать на изменения в механизмах стилизации, внесенные в более новых версиях Delphi.

Поиск Класса DLL Форм

Разработчики сталкиваются с трудностью в поиске класса форм из DLL, что затрудняет попытки применить VCL Styles Hook для исправления проблемы.

Пример Изображений

На скриншотах видно, как выглядит форма до и после проблемы. Оригинальное изображение формы (https://i.stack.imgur.com/AqJBp.jpg) демонстрирует правильное отображение, в то время как искаженное изображение (https://i.stack.imgur.com/DmHio.jpg) показывает, как элементы управления и фон могут быть искажены.

Альтернативный Подход к Решению

В комментариях к проблеме упоминается, что стилизация нативных окон WinAPI (например, Static, Button, RebarWindow32) осуществляется с помощью WH_CBT Hook. Предлагается отключить стилизацию этих элементов управления, используя свойство Vcl.Themes.TStyleManager.SystemHooks следующим образом:

TStyleManager.SystemHooks := [];

Подтвержденное Решение

Проблема может быть связана с использованием нативных элементов управления WinAPI в DLL, где фон изображения рисуется некорректно при применении VCL Styles. Отключение стилизации для этих элементов через свойство TStyleManager.SystemHooks позволяет решить проблему:

TStyleManager.SystemHooks := [];

Разработчики, которые применили данное решение в событии OnCreate формы, сообщают о положительном результате. Это подтверждает, что предложенный подход является верным.

Пример Кода

Для применения решения, добавьте следующий код в событие OnCreate формы, которая вызывает внешнюю DLL:

procedure TForm1.FormCreate(Sender: TObject);
begin
  TStyleManager.SystemHooks := [];
end;

Этот код должен быть размещен в коде формы, которая является точкой входа в вашем приложении, где вы взаимодействуете с внешней DLL.

Заключение

При использовании внешних DLL в среде Delphi 10.1 Berlin с VCL Styles, важно учитывать возможные проблемы с отображением элементов управления. Отключение стилизации нативных окон WinAPI может быть эффективным решением для устранения искажений. Используйте предложенный код в событии OnCreate формы, чтобы восстановить корректное отображение форм из DLL.


Важно: Убедитесь, что отключение стилизации не повлияет на другие элементы вашего приложения, которые должны быть стилизованы. Перед внесением изменений в продакшн, тщательно протестируйте приложение.


Примеры кода можно использовать в проектах на Delphi для решения описанной проблемы.

Создано по материалам из источника по ссылке.

Проблемы отображения внешних DLL форм в Delphi 10.1 Berlin с использованием VCL Styles и способы их устранения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DLL и PlugIns ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 10:56:12/0.0035080909729004/0