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

来源:互联网 发布:美式家具 知乎 编辑:程序博客网 时间:2024/06/05 11:35

最近写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+的值。

以上就是在网上搜索到的两种方法,真的是要对事件和方法的作用及调用理解清楚,才能知道怎么回事了,呵呵

0 0
原创粉丝点击