Mac Appstore 用にサンドボックス化されている Firemonkey アプリケーションの TOpenDialog に問題があるようです。私は XE3 を使用していますが、XE2 にも存在します。実際にここで QC レポートを見つけましたが、まだ解決されていません。
http://qc.embarcadero.com/wc/qcmain.aspx?d=105344
誰かが同じ問題を抱えていましたか、またはそれを回避する方法はありますか?
確認はとても簡単です。フォームに TOpenDialog を配置して、Execute メソッドを呼び出すだけです。Embarcadero の指示に従って、アプリケーションに署名し、サンドボックス化します。
http://docwiki.embarcadero.com/RADStudio/en/Mac_OS_X_Application_Development
Execute が呼び出されると遅延が発生し、アプリが一瞬フリーズしますが、何も表示されません。例外やエラー メッセージはありません。アプリがサンドボックス化されていない場合、ダイアログは正しく機能します。
このコードも機能しないため、問題はおそらく TOpenDialog によって呼び出される TNSOpenPanel のどこかにあるのですが、残念ながら見つけられませんでした。
var
LOpenDir: NSOpenPanel;
begin
LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel);
LOpenDir.runModal;
LOpenDir.release;
サンドボックスを使用すると、サンドボックスのないクラスと比較して、NSOpenPanel がさまざまなクラスから派生することをApple のドキュメントで読みました。これが問題の原因だと思います。
どんなアイデアでも大歓迎です。開く/保存ダイアログなしでファイルを操作する必要があるアプリを実際に公開することはできません:)
ところで、プロジェクト オプションで権利の組み合わせをいくつか試しましたが、効果がありませんでした。