2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FireMonkey と macOS

Last updated at Posted at 2017-06-25

FireMonkey と macOS

前回は、Windows について Window Handle を使う方法を紹介しました。
Windows では、Window Handle が重要ということでした。

macOS に依存した処理をする

Windows と違って macOS は構造化された API のため基本的にはハンドルではなくクラスのメソッドを使って OS の機能を呼び出します。

TMacWindowHandle

前回同様、WindowHandleToPlatform 関数を使います(定義されている unit は FMX.Platform.Mac になります)。
TMacWindowHandle クラスのインスタンスが返ってくるので、そのプロパティ Wnd で NSWindow のインスタンスが返ってきます。

ここまでをコードにすると…

function GetWnd(const iForm: TCommonCustomForm): NSWindow;
begin
  Result := WindowHandleToPlatform(AHandle).Wnd;
  Result.Foo() // NSWindow に定義されているメソッドを呼べます
end;

と、こんな感じで呼び出せます。

Windows と違って NSWindow が取れるので、もうこれだけで直接色々できます。

まとめ

WindowHandleToPlatform を使うと NSWindow が取れます。

おまけ

NSApplication のインスタンスも取得できます。

NSApp := TNSApplication.Wrap(TNSApplication.OCClass.sharedApplication);
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?