起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 145|回复: 7

【结帖】关闭功能时为何仍执行DataEdit_Change事件**

[复制链接]
发表于 2008-10-6 20:46:12 | 显示全部楼层 |阅读模式
根据调试,FormDocCreate时,DataEdit 的OnChange就会执行,当关闭功能时也会执行,并且还是在
FormDocDestroy之前执行,因为功能在关闭,界面都没,某些代码在这个事件就会报错,例如建一个TQuery 给公共变量赋值,请问有无办法判断当前是关闭,跳过这些代码。
回复

使用道具 举报

发表于 2008-10-7 08:49:14 | 显示全部楼层
可以使用数据集的OnFieldChange事件。
NameSpace: Business.Model
--------------------------------------------------------------------------------
TDataSetFieldEvent = procedure(DataSet: Business.Data.TDataSet; Field: Business.Data.TDataField) of Object;
回复 支持 反对

使用道具 举报

发表于 2008-10-7 08:49:38 | 显示全部楼层
自己用一个变量去记录是否要关闭的状态
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-7 14:53:30 | 显示全部楼层
我这里指的是TDataEdit,2楼贾老师说的 可以使用数据集的OnFieldChange事件,就是换成这个TDataEdit对应的数据集上写代码?这个要试验一下。
3楼说的我理解不知道对不对,我想过在FormDocDestroy设一个状态,然后当=这个状态的时候不执行事件,但是因为FormDocDestroy更晚一步执行,所以这个方法不会,有无办法确定我点了X(关闭),因为这个代码关闭前还是有可能执行。
回复 支持 反对

使用道具 举报

发表于 2008-10-7 15:03:43 | 显示全部楼层
3楼是让你在窗体里定义一个变量(值由你自己来控制)

在TDataEdit的OnChange事件里,先判断变量的值,来决定是否执行里面的代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-7 15:50:15 | 显示全部楼层
我明白了,退出的时候变量是被清空了的,可以用这个来判断,多谢了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 13:34:21 | 显示全部楼层
上面的说变量被清空的说法是错的,因为当时在别人的机器稍微测,以为成功,实际还是没效果。后来的解决是,在窗体的BizFormCloseQuery事件中设定要关闭的数据集,根据这个数据集的状态去调过代码的执行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-26 15:31:32 | 显示全部楼层
上面的办法只能应付关闭功能,但是关闭客户端仍然会报错。
今天终于找到一个办法,看来前面都弄复杂了,试验到在关闭时DataSetBroker.DataSet.FieldByName('XXX').AsInteger不是空值,但对应的DataEditXXX.Text则被清空,获取到的是空字符,只需判断DataEditXXX.Text是否为空字符,就可以来控制下面的代码是否执行,目前测试是完全解决了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 07:36 , Processed in 0.035735 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表