2012-11-25 28 views
7

似乎有與TOpenDialog在Firemonkey應用程序,這是沙箱爲Mac蘋果商店的問題。我使用XE3,但它也出現在XE2中。 我居然發現了一個QC報告在這裏,但它仍然沒有解決:TOpenDialog/NSOpenPanel不能在沙盒Delphi應用程序工作

http://qc.embarcadero.com/wc/qcmain.aspx?d=105344

有沒有人有同樣的問題,或任何想法如何解決呢?

這是很容易檢查。只需在窗體上放置一個TOpenDialog並調用Execute方法即可。註冊和沙箱應用根據Embarcadero的說明:

http://docwiki.embarcadero.com/RADStudio/en/Mac_OS_X_Application_Development

當執行被稱爲是有延遲,應用程序凍結了一會兒,但沒有顯示。沒有例外或錯誤消息。 如果應用程序未被沙箱化,對話框將正常工作。

此代碼也不起作用,所以問題可能出現在TpenOpenPanel中,由TOpenDialog調用,但不幸的是我找不到它。

var 
    LOpenDir: NSOpenPanel; 
begin 
    LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel); 
    LOpenDir.runModal; 
    LOpenDir.release; 

我在Apple docs閱讀了沙箱的NSOpenPanel從不同類派生的,相比於一個沒有一個沙箱中。 我想這是問題的原因。

任何想法將不勝感激。我們真的不能發佈與文件工作,而無需打開/保存對話框:)

順便說一句,我試着在項目選項的權利的幾種組合的應用,但都沒有效果。

+0

我得到了同樣的問題,任何變通辦法?謝謝。 – RRN

+0

我至今不幸找到了解決方法。唯一有利的是該問題出現在OSX 10.7上,而不是10.8上。到目前爲止,我的應用程序中唯一的解決方案是在10.7上運行時禁用「瀏覽」功能,並只使用拖放選項。 – VGeorgiev

回答

0

當一個應用程序是在沙箱中,NSOpenPanel/NSSavePanel應由稱爲Powerbox透明模塊來管理。 AppKit框架的正常面板不起作用。但要使Powerbox訪問文件系統,權利列表應包括

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

配置。

+0

是的,我已經嘗試將其添加到權利,但它不會改變行爲。有沒有什麼特別的,我應該用Powerbox模塊來調用OpenPanel?我想不是,但仍然... – VGeorgiev

+0

您好Georgiev,我會盡快在我找到解決方法時在這裏寫下答案。 –

+0

你好,我試圖重新產生你的錯誤,但我無法設法爲應用程序設計密碼。我得到了錯誤:目標文件格式無法識別,無效或不適用。你有沒有遇到這種情況,你怎麼能爲你的應用程序進行編碼? –