gpt4 book ai didi

macos - TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作

转载 作者:行者123 更新时间:2023-12-03 14:55:00 27 4
gpt4 key购买 nike

Firemonkey 应用程序中的 TOpenDialog 似乎存在问题,该应用程序已针对 Mac Appstore 进行沙箱处理。我使用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;

我在 Apple docs 中读到与没有沙箱的情况相比,使用沙箱的 NSOpenPanel 派生自不同的类。我想这就是问题的原因。

任何想法将不胜感激。我们无法真正发布必须在没有打开/保存对话框的情况下处理文件的应用程序:)

顺便说一句,我尝试了项目选项中权利的几种组合,但没有效果。

最佳答案

当应用程序位于沙箱中时,NSOpenPanel/NSSavePanel 应由名为 Powerbox 的透明模块管理。 AppKit框架的普通面板没有效果。但要启用 Powerbox 来访问文件系统,权限列表应包括

com.apple.security.files.user-selected.read-write YES

配置。

关于macos - TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com