Можно ли с помощью Delphi XE2 создать приложение с графическим интерфейсом для Mac без использования FireMonkey для графического интерфейса? Если да, то что можно использовать и как это сделать?
Delphi XE2: можно ли создавать приложения Mac с графическим интерфейсом без FireMonkey?
Ответы (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.
Хотели бы вы создать приложение с графическим интерфейсом для Windows без VCL?
Это примерно та же идея, используя непосредственно MacAPI вместо WinAPI.
Вероятно, это немного сложнее (преуменьшение), так как не так много документации по как это сделать с точки зрения Delphi/Pascal.