Подтвердить что ты не робот

Delphi XE2: Можно ли создавать приложения Mac GUI без FireMonkey?

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

4b9b3361

Ответ 1

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

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

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

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

Update

Вы также можете использовать заголовки 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.

Ответ 2

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