在PowerBuilder的DataWindows.ItemChanged事件中修改当前单元格值的方法
2010-06-01 16:05
405 查看
在PB中,ItemChanged事件具有数据效验功能。通过其返回值,可以告之PB数据是否通过用户效验,然后PB将根据此效验结果决定是接受新值还是拒绝修改。此描述的隐含的表达了:PB在ItemChanged执行完后设置单元格值。另外,程序员无法在ItemChanged修改data参数(即新值)。也就是说,在ItemChanged事件中,我们只能决定是否接受这次修改,若是,则单元格值为输入值(即Data参数值),否则,单元格将保持原值。我们无法为单元格指定两者外的一个值。
这样就无法在ItemChanged中实现这样一种效果:根据用户输入,对其进行一些转换或格式化操作,再赋给单元格。因为在ItemChanged中设置的单元格值会在ItemChanged事件执行完后被冲掉,最终单元格值仍将根据ItemChanged返回值被置为Data值或原值。
但借助Post关键字可以非常简洁的获得此效果,PB文档中对Post的描述大意是:Post将目标调用放入窗口的消息队列中,所调用代码何时执行取决于消息在消息队列中的位置。
此用Post的原理如下:
Windows应用程序是事件驱动或消息驱动的,用户通过界面交互生成消息,程序捕获各种消息并针对各种消息调用不同的处理程序,这些处理程序中包装有用户逻辑。
消息的处理是串行的,在一个消息处理完之前,下一个消息不会被开始处理。一个消息的生命周期从其被生成并加入消息队列开始,到其处理完毕时止。
从ItemChanged事件被触发,到PB根据ItemChanged事件返回值设置单元值格,属于同一个消息处理过程。因此在此期间通过Post调用的操作,将在PB设置单元格之后执行。
此方法的使用描述如下:在ItemChanged事件中,在设置单元格值的语句前加上关键字Post即可。eg:
String NewValue = "17951" + data;
Post SetValue(Col,Row,NewValue);
注:
1、PB中的事件与Windows中的事件含义并不相同。
2、PB如何将函数调用包装为一个消息,这是一个很值得探讨的东西。
这样就无法在ItemChanged中实现这样一种效果:根据用户输入,对其进行一些转换或格式化操作,再赋给单元格。因为在ItemChanged中设置的单元格值会在ItemChanged事件执行完后被冲掉,最终单元格值仍将根据ItemChanged返回值被置为Data值或原值。
但借助Post关键字可以非常简洁的获得此效果,PB文档中对Post的描述大意是:Post将目标调用放入窗口的消息队列中,所调用代码何时执行取决于消息在消息队列中的位置。
此用Post的原理如下:
Windows应用程序是事件驱动或消息驱动的,用户通过界面交互生成消息,程序捕获各种消息并针对各种消息调用不同的处理程序,这些处理程序中包装有用户逻辑。
消息的处理是串行的,在一个消息处理完之前,下一个消息不会被开始处理。一个消息的生命周期从其被生成并加入消息队列开始,到其处理完毕时止。
从ItemChanged事件被触发,到PB根据ItemChanged事件返回值设置单元值格,属于同一个消息处理过程。因此在此期间通过Post调用的操作,将在PB设置单元格之后执行。
此方法的使用描述如下:在ItemChanged事件中,在设置单元格值的语句前加上关键字Post即可。eg:
String NewValue = "17951" + data;
Post SetValue(Col,Row,NewValue);
注:
1、PB中的事件与Windows中的事件含义并不相同。
2、PB如何将函数调用包装为一个消息,这是一个很值得探讨的东西。
相关文章推荐
- Windows下修改mysql的data文件夹存放位置的方法
- GridView的技巧 绑定行事件,取得单元格值,或取得单元格控件方法,鼠标经过样式
- Dev GridControl修改单元格无法触发CellValueChanged事件的解决方法
- 在dw的itemchanged事件里面,修改当前参数data
- Windows下修改mysql的data文件夹存放位置的方法
- Android--GridView/ListView 点击Item修改Item背景 标识是当前选择项方法
- 在dw的itemchanged事件里面,修改当前参数data
- 图解修改 data.dat 来破解 Windows Genuine Advantage 的方法
- (Java)JComboBox的itemStateChanged事件被选中点击执行两次的解决方法
- Windows下修改mysql的data文件夹存放位置的方法
- 数据窗口的ItemChaned事件中修改当前值的方法
- 数据窗口的ItemChaned事件中修改当前值的方法
- Android--GridView/ListView 点击Item修改Item背景 标识是当前选择项方法:
- [置顶] RecycleView的基本配置和使用方法(三)---RecycleView中 item的事件处理
- windows 8 metro app 中 选中某个 item 弹出 appbar 的方法
- Windows多线程间同步事件的控制方法
- Windows下程序修改IP的三种方法
- MySQL——修改root密码的4种方法(以windows为例)
- 修改Windows环境变量后不重新启动使之立即生效的方法
- ListView点击事件失效(item里面有button按钮控件)解决方法