使用 Delphi XE2,是否可以在不使用 FireMonkey 作为 GUI 的情况下创建 Mac GUI 应用程序?如果是这样,可以使用什么以及如何使用它?
2 回答
原则上是可以的。但是您需要翻译 Apple 公开的 Objective-C 标头和类。这是一项艰巨的任务,其中一部分已经由 FreePascal 人或 Objective-Pascal 人完成。
但是没有什么能阻止您自己翻译(丢失的)标题。您可以使用本页所述的 Objective-C 运行时中的纯 C 函数调用类的方法并执行其他功能。这只是很多工作,因为类库很大。您可以从 Core Foundation 开始,然后是通用 Foudnation,然后是 Cocoa、Quartz 等。这取决于您。您可能还想为这些类编写包装器。
目前,开箱即用,没有简单的方法可以做你想做的事。
但我计划编写一个简单的应用程序来证明它是可能的。不过,这可能需要一些时间。
更新
您还可以在Macapi命名空间(即所有以Macapi开头的单元,如Macapi.ObjectiveC.pas、Macapi.ObjcRuntime.pas、Macapi.CocoaTypes.pas等)以及System中使用 Embarcadero 翻译的 CoreFoundation 标头.Mac.CFUtils。在那里你会找到(一些)主要的 CoreFoundation 类以及从 Delphi 中使用它们的简单方法。不过,我不确定这些是否已正确记录,因此您必须自己了解如何使用它们。代码中的注释可能会对您有所帮助。
可以在 docwiki中找到有关此内容的更多信息。请注意,控制台应用程序也可以具有 GUI。
更新 2
是的,这绝对是可能的。请参阅 http://rvelthuis.de/zips/sampleniblessapp.7z。请注意,最重要的Macapi单元原来是Macapi.AppKit。
您想在没有 VCL 的情况下创建一个 Windows GUI 应用程序吗?
大致相同的想法,直接使用 MacAPIs 而不是 WinAPIs。
可能有点困难(轻描淡写),因为从 Delphi/Pascal 的角度来看,没有关于如何做到这一点的大量文档。