【问题标题】:Create NSWindow from Delphi OSX从 Delphi OSX 创建 NSWindow
【发布时间】:2014-02-23 21:08:12
【问题描述】:

如何在 Delphi for OSX 的代码中创建 NSWindow?

这是我尝试过的:

uses Macapi.AppKit,Macapi.CocoaTypes;

...

var
  NW : NSWindow;
begin
  Nw := TNSWindow.Create;
  Nw.initWithContentRect(MakeNSRect(100,100,250,250), NSBorderlessWindowMask, NSBackingStoreBuffered, True);

但在 initWithContentRect 行中,我在 PAServer 窗口“_setFrameworkScaleFactor 调用非 nil _borderView”中遇到运行时错误。

我猜我做错了,但我发现很难找到任何例子。

【问题讨论】:

  • 您查看 FMX.Platform.Mac.pas 是否了解 FMX 是如何做到这一点的?
  • @Giel 是的,但看起来他们已经在 TFMXWindow 类中覆盖了 NSWindow 。我不明白为什么有必要这样做,如果可能的话,我想在没有任何 FMX 依赖的情况下这样做。
  • 你试过this吗?
  • @RRUZ 非常感谢,该链接是使其正常工作的关键。

标签: macos delphi delphi-xe2


【解决方案1】:

感谢 RRUZ 的评论(结合 Giel 建议的 FMX 来源)我设法让它工作:

uses Macapi.AppKit, Macapi.CocoaTypes, Macapi.ObjectiveC;

...

var
  Nw : NSWindow;
begin
  Nw:= TNSWindow.Wrap(TNSWindow.alloc.initWithContentRect(
    MakeNSRect(0,100,100, 100),
    NSTitledWindowMask, NSBackingStoreBuffered, True));

  Nw.orderFront( (TNSApplication.Wrap(TNSApplication.OCClass.sharedApplication) as ILocalObject).GetObjectID );
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2015-05-28
    • 2013-04-11
    相关资源
    最近更新 更多