Совместная работа VCL и FireMonkey

Практически с самого момента появления библиотеки FireMonkey встал вопрос об организации её взаимодействия с библиотекой VCL.

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

Способ 1. При помощи механизма dll

Первый из них это использование dll библиотек.

Dll библиотеки могут содержать как формы VCL, так и формы FireMonkey. Поэтому для работы с формой FireMonkey из VCL приложения и наоборот можно просто создать отдельную dll библиотеку с формой и задействовать её в приложении.

Экспорт формы из dll для VCL и FireMonkey абсолютно идентичен.

Также для обеих библиотек абсолютно идентична работа с такими dll.

Если всё сделано правильно, в данном примере при нажатии на кнопку в VCL будет показана форма FireMonkey.

Способ 2. Подключение существующей формы к проекту

Как известно к проектам RAD Studio можно подключать файлы практически любого типа. Однако, что примечательно, эта IDE способна работать также с проектами, в которых формы созданы на основе разных библиотек.

Нужно просто создать VCL или FireMonkey форму (например, в виде отдельного «чистого» проекта), а затем подключить к проекту на FireMonkey или VCL.

После этого остаётся только прописать модуль формы в секции uses, создать её экземпляр и вызывать на экран.

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

Однако это способ подходит только для работы в рамках одного проекта и не является полной заменой предыдущему.

Таким образом, в распоряжении программиста имеются целых два способа в зависимости от задачи построить взаимодействие между VCL и FireMonkey. Но, какой бы из них не использовался необходимо всегда учитывать одно немаловажное обстоятельство.

Дело в том, что VCL и FireMonkey не имели и до сих пор не имеют встроенных средств интеграции между собой. Поэтому оба вышеописанных способа являются по своей сути «искусственными». В особенности второй.

Соответственно, их применение всегда на свой страх и риск. Как, в прочем и любых других возможностей не описанных в документации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *