数据窗口的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+的值。
以上就是在网上搜索到的两种方法,真的是要对事件和方法的作用及调用理解清楚,才能知道怎么回事了,呵呵
那么沿着这种思路走下去,接受当前值应该是把+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+的值。
以上就是在网上搜索到的两种方法,真的是要对事件和方法的作用及调用理解清楚,才能知道怎么回事了,呵呵
相关文章推荐
- 数据窗口的ItemChaned事件中修改当前值的方法
- 在PowerBuilder的DataWindows.ItemChanged事件中修改当前单元格值的方法
- IFRAME弹出式窗口回发数据到父页面[调用父页JS方法并模拟调用按钮的回发事件]
- 在PB中动态修改数据窗口DW的SQL语句方法注意事项
- 浅议PB中数据窗口缓冲区与数据修改状态,filter,delete之后不想修改之方法
- [恒泰医学研究院] django _popup=1 在弹出的form表单中修改完数据之后,关闭当前窗口并刷新父窗口
- 浅议PB中数据窗口缓冲区与数据修改状态(转)散分贴解决方法
- IFRAME弹出式窗口回发数据到父页面[调用父页JS方法并模拟调用按钮的回发事件]
- 浅议PB中数据窗口缓冲区与数据修改状态(转)散分贴解决方法
- Java插入修改删除数据库数据的基本方法
- PB数据窗口modify修改字段下拉属性
- JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
- MySQL修改数据表存储引擎的3种方法介绍
- 修改IE默认打开窗口大小的三种方法
- 修改默认apn数据的方法
- JS针对浏览器窗口关闭事件的监听方法集锦
- 将DW数据窗口导出为EXCEL文件的方法(整理)
- windows下修改窗口图标的方法
- kendoGrid单击、双击事件绑定并获取当前行数据
- PB 数据窗口中自动显示当前分组的组的行数。