您的位置:首页 > 其它

数据窗口的ItemChaned事件中修改当前值的方法

2014-03-07 10:14 417 查看
最近写PB时遇到要需要在数据窗口的ItemChanged事件中修改正在编辑的字段的值,发现SetItem+和SetText+都不好使,在网上搜了一下,给我复习了一边+ItemChanged+事件的特性,就是依据返回值,来判断接受或者拒绝当前值和焦点是否可以离开。所以直接写+SetItem 或+SetText+是不能修改当前值的。

那么沿着这种思路走下去,接受当前值应该是把+data+的值赋给当前编辑框,拒绝当前值则是什么都不做。

如果要修改当前编辑框的值,要么就是等接受了+data+值之后再修改,要么就是不接受+data+值,直接修改。

对于这两种情况就有两种方法了:

1.+先接受+data+值,再修改(其实这里接受与不接受都没影响,因为是跳出了+ItemChanged+事件之后再修改的)++这里要用到+PostEvent+函数,这个函数是把触发的事件插入到事件列表的最后面,也就是说会在+ItemChanged+事件结束后在执行,也就可以实现修改当前编辑字段的值了。

2.拒绝接受+data+值,直接修改++这里因为拒绝接受+data+值(在+ItemChanged+事件中返回+1+或者+2),是对当前编辑的内容不做处理,所以在+ItemChanged+事件修改当前编辑字段的值就不会被覆盖或者取消了。

这里需要注意的是,直接给当前编辑字段赋值要用+SetItem+,而不能使用+SetText+,因为+SetText+会调用+AcceptText +函数,而+AcceptText+会将+data+的值覆盖+SetText+的值。

以上就是在网上搜索到的两种方法,真的是要对事件和方法的作用及调用理解清楚,才能知道怎么回事了,呵呵&oq=最近写PB时遇到要需要在数据窗口的ItemChanged事件中修改正在编辑的字段的值,发现SetItem+和SetText+都不好使,在网上搜了一下,给我复习了一边+ItemChanged+事件的特性,就是依据返回值,来判断接受或者拒绝当前值和焦点是否可以离开。所以直接写+SetItem 或+SetText+是不能修改当前值的。

那么沿着这种思路走下去,接受当前值应该是把+data+的值赋给当前编辑框,拒绝当前值则是什么都不做。

如果要修改当前编辑框的值,要么就是等接受了+data+值之后再修改,要么就是不接受+data+值,直接修改。

对于这两种情况就有两种方法了:

1.+先接受+data+值,再修改(其实这里接受与不接受都没影响,因为是跳出了+ItemChanged+事件之后再修改的)++这里要用到+PostEvent+函数,这个函数是把触发的事件插入到事件列表的最后面,也就是说会在+ItemChanged+事件结束后在执行,也就可以实现修改当前编辑字段的值了。

2.拒绝接受+data+值,直接修改++这里因为拒绝接受+data+值(在+ItemChanged+事件中返回+1+或者+2),是对当前编辑的内容不做处理,所以在+ItemChanged+事件修改当前编辑字段的值就不会被覆盖或者取消了。

这里需要注意的是,直接给当前编辑字段赋值要用+SetItem+,而不能使用+SetText+,因为+SetText+会调用+AcceptText +函数,而+AcceptText+会将+data+的值覆盖+SetText+的值。

以上就是在网上搜索到的两种方法,真的是要对事件和方法的作用及调用理解清楚,才能知道怎么回事了,呵呵
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: