Перейти к содержанию
Fire Monkey от А до Я
  • 0

Компонент и для VCL и для FMX


SerhioUser

Вопрос

Всем доброе время суток.

Делаю "универсальный" компонент для обоих библиотек на C++ Builder. Наследник от TComponent.

Функционал компонента НЕ зависит от визуальной библиотеки и весь код прописывается в одном файле.

Попробовал создать 2-а пакаджа. В каждом из них создал пустой компонент, каждый под свою платформу. Имя у компонентов одинаковое. 1-ый пакадж установился, 2-ой нет. Студия сказала, что компонент с таким именем содержится в 1-ом пакадже.

Вопрос: как правильно создать пакаджи, чтоб компонент был доступен и для VCL-форм и для FMX-форм и имел одинаковое имя?

Например UniDac компоненты видны для обоих библиотек и имеют одинаковые имена и для VCL и для FMX.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Не разделять на FMX и VCL - нвизуальгый компонент после установки будет доступен и там и там.

 

Не хотелось бы так... Хоть код и не зависит от библиотеки (в целом), но все же мелкие различия могут быть, которые нужно за#ifdef-ить. Также Например инклуды для разных платформ/библиотек разные, и либы могут подключаться в зависимости от них.

Ссылка на комментарий
  • 0

SerioUser, а нельзя эти мелкие различия за#ifdef-ить в одном пекедже?

Предварительно проверять

{$IF DECLARED(FireMonkeyVersion)}
  {$DEFINE HAS_FMX}
{$ELSE}
  {$DEFINE HAS_VCL}
{$IFEND}

ну и инклуды делать соответственно проверке

{$IFDEF HAS_FMX}
   // подключаем библиотеки для FMX
{$ENDIF}

{$IFDEF HAS_VCL}
   // подключаем библиотеки для VCL
{$ENDIF}
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...