说明:当用户浏览数据时无意或有意的修改了数据,所以当关闭数据浏览时,需要提示用户是否对所做的修改做保存,一般可以在每个可以被修改的控件中的INTERACTIVECHANGE事件中写代码,当引发这个事件时,将某个变量(如isEdit)设为逻辑.T.,那么当退出时可以通过判断该变量的值来提示操作者是否要保存。因为如果用户没有做修改而再提示的话显得有点多余了,所以这个提示会显得操作更友好。
但是如果对每一个可以编辑的控件的INTERACTIVECHANGE事件都写入代码,显得有点麻烦,即使作为类考虑也不是很好的办法,所以下面的方法供大家参考。
注意:使用此法,你必须用缓冲方式打开表才行。
isNeedToSave=.f.
for gnCount = 1 TO FCOUNT( ) && 循环次数等于字段的数目
if GETFLDSTATE(FIELD(gnCount))>=2 && 显示各字段,具体看GETFLDSTATE()函数
isNeedToSave=.t.
exit && 当有某个字段被修改后,即退出判断
endif
endfor
if isNeedToSave
ans=messagebox(要保存所做的修改吗?,3+32,询问)
do case
case ans=6 && 选择是
=tableupdate(.t.)
case ans=7 && 选择否
=tablerevert(.t.)
case ans=2 && 选择取消
endcase
endif
建议将以上代码写在表单的QUERYUNLOAD事件中。
但是如果对每一个可以编辑的控件的INTERACTIVECHANGE事件都写入代码,显得有点麻烦,即使作为类考虑也不是很好的办法,所以下面的方法供大家参考。
注意:使用此法,你必须用缓冲方式打开表才行。
isNeedToSave=.f.
for gnCount = 1 TO FCOUNT( ) && 循环次数等于字段的数目
if GETFLDSTATE(FIELD(gnCount))>=2 && 显示各字段,具体看GETFLDSTATE()函数
isNeedToSave=.t.
exit && 当有某个字段被修改后,即退出判断
endif
endfor
if isNeedToSave
ans=messagebox(要保存所做的修改吗?,3+32,询问)
do case
case ans=6 && 选择是
=tableupdate(.t.)
case ans=7 && 选择否
=tablerevert(.t.)
case ans=2 && 选择取消
endcase
endif
建议将以上代码写在表单的QUERYUNLOAD事件中。