Delphi XE2: можно ли создавать приложения Mac с графическим интерфейсом без FireMonkey?

Можно ли с помощью Delphi XE2 создать приложение с графическим интерфейсом для Mac без использования FireMonkey для графического интерфейса? Если да, то что можно использовать и как это сделать?


person Shannon Matthews    schedule 16.09.2011    source источник
comment
Я думаю, что было бы проще использовать FreePascal, который поддерживает именно это целую вечность.   -  person David Heffernan    schedule 16.09.2011
comment
Возникает логичный вопрос: почему?   -  person Misha    schedule 17.09.2011
comment
@Misha: На данный момент нет причин. Мне просто было любопытно, был ли FM единственным вариантом.   -  person Shannon Matthews    schedule 17.09.2011
comment
Шеннон, я уверен, что, приложив достаточно усилий, вы могли бы сделать это и без FireMonkey, но усилия всегда будут на порядок выше. Кроссплатформенные приложения находятся в версии 1.0 с Delphi, поэтому я ожидаю, что простота разработки резко возрастет в течение следующих 12-24 месяцев. Я бы пока не стал погружаться слишком глубоко, так как ландшафт будет меняться очень быстро ;-)   -  person Misha    schedule 17.09.2011


Ответы (2)


В принципе, это возможно. Но вам нужно будет перевести заголовки и классы Objective-C, предоставленные Apple. Это огромная задача, часть которой уже выполнена людьми FreePascal или людьми Objective-Pascal.

Но ничто не мешает вам перевести (отсутствующие) заголовки самостоятельно. Вы можете вызывать методы класса и выполнять другие функции, используя чистые функции C в среде выполнения Objective-C описано на этой странице. Это просто много работы, так как библиотека классов огромна. Вы можете начать с Core Foundation, затем с General Foudnation, а затем с Cocoa, Quartz и т. д. Это зависит от вас. Возможно, вы также захотите написать обертки для классов.

В настоящее время нет простого способа сделать то, что вы хотите.

Но я планирую написать простое приложение в качестве доказательства того, что это возможно. Хотя это может занять некоторое время.

Обновлять

Вы также можете использовать заголовки CoreFoundation, переведенные Embarcadero, в пространстве имен Macapi (т. е. все модули, начинающиеся с Macapi, например Macapi.ObjectiveC.pas, Macapi.ObjcRuntime.pas, Macapi.CocoaTypes.pas и т. д.), а также System.Mac.CFUtils. Там вы найдете (некоторые) основные классы CoreFoundation и простые способы их использования из Delphi. Однако я не уверен, что они должным образом задокументированы, поэтому вам придется самостоятельно выяснить, как их использовать. Комментарии в коде могут вам помочь.

Немного больше об этом можно найти в docwiki. Обратите внимание, что консольное приложение также может иметь графический интерфейс.

Обновление 2

Да, это определенно возможно. См. http://rvelthuis.de/zips/sampleniblessapp.7z. Обратите внимание, что самым важным элементом Macapi оказался Macapi.AppKit.

person Rudy Velthuis    schedule 16.09.2011
comment
Не так уж и много работы (хотя размещение элементов управления в коде всегда требует немного больше работы). Я уверен, что можно также использовать xibs или nibs. Это следующее, что я хочу попробовать. Можно также написать генератор кода, который принимает форму VCL и пишет аналогичный код для вас. - person Rudy Velthuis; 21.09.2011
comment
@RudyVelthuis Привет, Руди, есть идеи по следующему вопросу? Мне удалось создать пустой фрейм веб-просмотра, но содержимое не хочет загружаться: stackoverflow.com/questions/9731817/ - person Phillip Roux; 17.03.2012

Хотели бы вы создать приложение с графическим интерфейсом для Windows без VCL?
Это примерно та же идея, используя непосредственно MacAPI вместо WinAPI.
Вероятно, это немного сложнее (преуменьшение), так как не так много документации по как это сделать с точки зрения Delphi/Pascal.

person Francesca    schedule 16.09.2011
comment
Однако это не так уж отличается от программирования в Xcode и Objective-C. Я попробовал и преуспел. На самом деле удивительно, насколько легко это оказалось (после некоторого привыкания). В следующем проекте для размещения элементов управления будет использоваться файл .xib. - person Rudy Velthuis; 20.09.2011
comment
@Rudy, Эрр, если это не так уж отличается от программирования в Xcode и Objective-C, то почему бы не программировать в Xcode и Objective-C и избавить себя от хлопот! Я полагаю, что в качестве упражнения на то, что возможно, вы доказали, что это возможно, но во всех смыслах и целях вы должны были бы иметь мазохистскую жилку, чтобы хотеть сделать это. - person Misha; 20.09.2011
comment
@Misha: код, связанный с графическим интерфейсом, может быть похож на написание на Objective-C, остальное не обязательно (т. Е. Только часть V MVC должна быть такой). Это было доказательство концепции, и на самом деле его можно было использовать в качестве примера для VCL-подобного фреймворка тем, кто склонен к этому. Даррен Косински (Emabrcadero) написал, что будет вести блог о модулях Macapi и о том, как их использовать. Для людей, которым нужны нативные компоненты вместо имитации элементов управления, таких как FMX, это может быть началом. - person Rudy Velthuis; 21.09.2011