2012-06-26 69 views
4

當窗體關閉或應用程序終止並且未成功時,我一直在嘗試寫入數據到存儲。應用程序關閉之前何處進行最終處理?

我第一次從表格單元

procedure TForm1.FinalizeObject; 
begin 
inherited; 
SaveData; 
end; 

procedure TForm1.FinalizeObject; 
begin 
SaveData; 
inherited; 
end; 

沒有這些嘗試的工作,因此我rrearranged我的代碼,並從項目的單位試過它試圖

procedure TApplication.ApplicationClosing; 
begin 
SaveData; 
inherited; 
end; 

procedure TApplication.ApplicationClosing; 
begin 
inherited; 
SaveData; 
end; 

我有一個w3_showmessage爲保存數據的第一線,而且也從未得到過叫....所以,如果我能證明,這4種方法之一被觸發,我可以使用其中一個

我做錯了什麼?由於

+2

我相信當瀏覽器窗口關閉時,FinalizeObject和ApplicationClosing都不會被調用。不知道關於設備上的應用程序,但(但會懷疑相同)。 – gabr

+0

正如我所說,當我關閉我的應用程序時,這些都不會被調用 – JakeSays

+0

嗯,我只是確認了這一點:)我把你的問題發送給智能移動工作室的作者,但他在下週休假... – gabr

回答

2

在截稿時,智能暴露在應用程序對象兩個新的事件:

  • onunload的
  • OnBeforeUnload

這將使它更容易處理關機序列。智能javascript bootstrap現在也自動調用application.terminate(),所以你的代碼應該可以正常工作。