【问题标题】:Delphi XE2: Is it possible to create Mac GUI applications without FireMonkey?Delphi XE2:是否可以在没有 FireMonkey 的情况下创建 Mac GUI 应用程序?
【发布时间】:2011-11-18 12:27:56
【问题描述】:

使用 Delphi XE2,是否可以在不使用 FireMonkey 作为 GUI 的情况下创建 Mac GUI 应用程序?如果是这样,可以使用什么以及如何使用它?

【问题讨论】:

  • 我认为使用 FreePascal 会更容易,它已经支持了很久。
  • 逻辑问题是为什么?
  • @Misha:目前没有理由。我只是好奇 FM 是不是唯一的选择。
  • Shannon,我相信只要付出足够的努力,没有 FireMonkey 就可以做到,但努力总是要大一个数量级。 Delphi 的跨平台应用程序的版本为 1.0,因此我预计在接下来的 12-24 个月内,开发的便利性会显着提高。我还不会深入研究,因为风景会很快改变;-)

标签: delphi delphi-xe2 firemonkey


【解决方案1】:

原则上是可以的。但是您需要翻译 Apple 公开的 Objective-C 标头和类。这是一项艰巨的任务,其中一部分已经由 FreePascal 人或 Objective-Pascal 人完成。

但没有什么能阻止您自己翻译(缺失的)标题。您可以使用 Objective-C 运行时described on this page 中的纯 C 函数调用类的方法并执行其他功能。这只是大量工作,因为类库非常庞大。您可以从 Core Foundation 开始,然后是通用 Foudnation,然后是 Cocoa、Quartz 等。这取决于您。您可能还想为这些类编写包装器。

目前,开箱即用,没有简单的方法可以做你想做的事。

但我计划编写一个简单的应用程序来证明它是可能的。不过,这可能需要一些时间。

更新

您还可以在 Macapi 命名空间中使用 Embarcadero 翻译的 CoreFoundation 标头(即所有以 Macapi 开头的单元,例如 Macapi.ObjectiveC.pas Macapi.ObjcRuntime.pasMacapi.CocoaTypes.pas 等),以及 System.Mac.CFUtils。在那里你会找到(一些)主要的 CoreFoundation 类以及从 Delphi 中使用它们的简单方法。不过,我不确定这些是否已正确记录,因此您必须自己了解如何使用它们。代码中的 cmets 或许能帮到你。

可以在in the docwiki 找到更多相关信息。请注意,控制台应用也可以有 GUI。

更新 2

是的,这绝对是可能的。见http://rvelthuis.de/zips/sampleniblessapp.7z。请注意,最重要的 Macapi 单元原来是 Macapi.AppKit

【讨论】:

  • 工作量并不大(尽管在代码中放置控件总是需要更多的工作)。我敢肯定,也可以使用 xibs 或 nibs。那是我想尝试的下一件事。也可以编写一个代码生成器,它采用 VCL 形式并为您编写类似的代码。
  • @RudyVelthuis 嗨,Rudy,对以下问题有任何想法吗?我设法创建了一个空的 webview 框架,但没有内容要加载:stackoverflow.com/questions/9731817/…
【解决方案2】:

您想在没有 VCL 的情况下创建一个 Windows GUI 应用程序吗?
大致相同的想法,直接使用 MacAPIs 而不是 WinAPIs。
可能有点困难(轻描淡写),因为从 Delphi/Pascal 的角度来看,没有关于如何做到这一点的大量文档。

【讨论】:

  • 不过,这与在 Xcode 和 Objective-C 中编程并没有什么不同。我试了一下,成功了。实际上令人惊讶的是它变得如此容易(在一些习惯之后)。下一个项目实际上将使用 .xib 文件来放置控件。
  • @Rudy,Err,如果它与使用 Xcode 和 Objective-C 编程没有什么不同,那么为什么不使用 Xcode 和 Objective-C 编程,省去你的麻烦!我想作为可能的练习,您已经证明这是可能的,但出于所有意图和目的,您必须有自虐倾向才能做到这一点。
  • @Misha:GUI 相关的代码可能就像用 Objective-C 编写的一样,其余的不必是这样(即只有 MVC 的 V 部分必须是这样的)。这是一个概念证明,并且实际上可以被倾向于这样做的人用作类似 VCL 框架的案例研究。 Darren Kosinski (Emabrcadero) 写了一篇关于 Macapi 单元以及如何使用它们的博客。对于想要原生组件而不是模仿 FMX 等控件的人来说,这可能是一个开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2012-06-08
  • 1970-01-01
  • 2012-01-27
  • 2011-11-13
相关资源
最近更新 更多