在PB6.5.1和PB9.0中:
问题1:在itemchanged事件中:return 1在itemerror事件中:return 3在运行时,触发的事件序列是:itemchanged - > itemerror - > itemchanged - > itemerror为什么每个事件都被触发两次?
问题2:在itemchanged事件中:return 1在itemerror事件中:return 2在运行时,焦点没有移动到下一个单元格.为什么?
谢谢.
问题1:通过返回3 itemerror,您已拒绝数据,这会清除列并itemchanged再次触发.
至于哲学上为什么PowerBuilder被设计为以这种方式工作,我怀疑他们认为它会遵循最不惊讶的原则,即他们期待人们问为什么拒绝输入没有触发itemchanged.
问题2:该itemchanged事件重写itemerror.在itemchanged你拒绝输入并防止焦点改变; 在itemerror你现在接受输入,但你没有删除焦点更改块.您应该从2返回itemchanged,因为您可以itemerror通过返回1或3 来控制是否允许焦点从事件中更改.
万一有人在没有powerbuilder帮助文件的情况下阅读这个问题:
返回值itemchanged:
0(默认值)接受数据值
1拒绝数据值并且不允许焦点更改(触发迭代错误)
2拒绝数据值但允许焦点更改(触发迭代错误)
返回值itemerror:
0(默认值)拒绝数据值并显示错误消息框
1拒绝数据值而不显示消息框
2接受数据值
3拒绝数据值但允许更改焦点