Delphi - OSX - 如何扩展NSWindowDelegate

时间:2015-05-26 18:00:52

标签: macos cocoa delphi

Delphi目前的NSWindowDelegate实施非常有限。它不包含windowWillResize:toSize:

等事件

我该如何延伸?我可以在source \ rtl \ osx' Macapi.Appkit.pas中看到代码,所以我尝试将该文件的副本复制到我的应用程序文件夹中并将其包含在项目中。

然而,在这之后我得到了很多:

Unit FMX.[unit-name-here] was compiled with a different version of FMX.[other-unit-name-here].

扩展它的适当方法是什么?我怎样才能摆脱这些错误?

2 个答案:

答案 0 :(得分:5)

您可以创建自己的界面,添加缺少的方法。

kCVPixelFormatType_420YpCbCr8PlanarFullRange

在实现需要这些附加方法的类时,除了Delphi附带的接口外,只需添加接口。

  NSWindowDelegateEx = interface(IObjectiveC)
    [{ Press Ctrl+Shift+G to insert a guid here }]
    procedure windowDidEnterFullScreen(notification: NSNotification); cdecl;
    function window(window: NSWindow; willUseFullScreenContentSize: NSSize): NSSize; cdecl; overload;
    function window(window: NSWindow; willUseFullScreenPresentationOptions: NSApplicationPresentationOptions): NSApplicationPresentationOptions; cdecl; overload;
  end;

答案 1 :(得分:0)

为了摆脱错误复制,还要将FMX。[other-unit-name-here]文件复制到项目文件夹中。它需要重新编译,因为你已经改变了一些界面。