2012-06-26 67 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(),所以你的代码应该可以正常工作。