Как иметь VCL и FMX в одном приложении? - PullRequest
3 голосов
/ 27 декабря 2011

У меня есть приложение VCL и довольно изолированный код VCL. Я хотел бы включить формы Fire Monkey для поддержки Mac OSX.

Я планирую использовать интенсивный IFDEF, чтобы определить, собираться ли для Windows с VCL или для Mac OSX с FireMonkey.

К сожалению, невозможно добавить платформу MacOS из диспетчера проектов, если приложение VCL.

Есть ли способ как-нибудь взломать это? Может быть, вручную настроить файлы .dpr и .dproj?

Ответы [ 3 ]

4 голосов
/ 27 декабря 2011

Что делать с точностью до наоборот:

  • начать с приложения FireMonkey
  • добавить цель платформы OS X
  • IFDEF, чтобы вы могливыбор между VCL или FireMonkey

Это не так сложно сделать для проекта с 1 формой, затем добавить все существующие вещи из текущего VCL dpr.

Это может на самом делепоможет вам понять, чем отличаются .dpr и .dproj в VCL и FireMonkey (я однажды пытался, но это было слишком сложно сделать в краткосрочной перспективе, поэтому я отложил его для будущих исследований).

Примечание:

Будьте очень осторожны при размещении IFDEF в ваших файлах DPR.Delphi IDE владеет файлами DPR и удаляет IFDEFS, например, при добавлении новых форм или изменении некоторых свойств проекта.

3 голосов
/ 27 декабря 2011

Вы пытались вручную отредактировать файл dproj, чтобы добавить OSX32 в тег <Platforms>?

<Platforms>  
  <Platform value="Win64">True</Platform> 

  <Platform value="OSX32">True</Platform>  

  <Platform value="Win32">True</Platform>  
</Platforms>

Вы, вероятно, знаете об этом, но в случае, если это не так, есть это MonkeyMixer плагин от Simon Stuart, который может помочь добавить формы FMX в ваш проект.

Обратите внимание, что я не могу на самом деле протестировать что-либо из этого для Mac, я до сих пор на 100% Windows ...

1 голос
/ 27 декабря 2011

Это очень хороший признак того, что ваш код VCL изолирован от другого кода.

Архитектура n-Tier действительно имеет смысл, и, по-моему, подход полного RAD хорош для создания прототипов, но имеет ряд серьезных недостатков для создания поддерживаемых приложений с дополнительными функциями.

Стандартный способ использования Delphi XE2 - это использование только форм FireMonkey и пользовательского интерфейса. Поэтому кросс-компиляция будет легкой. Это действительно имеет смысл с точки зрения удобства: после того, как ваш код и формы FireMonkey установлены, вы можете развернуть их на нескольких платформах, просто путем перекомпиляции. И не забывайте, что Linux может стать целью в ближайшем будущем (DXScene был готов для Linux и Android). Использование конвертера форм может помочь вам получить код с использованием FireMonkey вместо VCL.

Если вам нужны только несколько простых форм для Mac OS X и вы ожидаете более сложного приложения для Windows (что может быть идеей, в зависимости от целей маркетинга), вы можете создать чистое «легкое» приложение FireMonkey. Но я не рекомендую использовать много условных определений. Создайте разнообразный проект с подходящей платформой FireMonkey. Затем поделитесь всеми вашими модулями, не относящимися к VCL, между проектом VCL и проектом FireMonkey. Вам не нужно условное определение для этого шаблона.

...