4

PB6.5.1和PB9.0以内:</p>

问题一:在itemchanged事件中:return 1 在itemerror事件中:return 3 在运行时,触发的事件顺序是:itemchanged-->itemerror-->itemchanged-->itemerror 为什么每个事件触发两次?</p>

问题2:在itemchanged 事件中:返回1 在itemerror 事件中:返回2 在运行时,焦点没有移动到下一个单元格。为什么?</p>

谢谢。

4

1 回答 1

6

问题 1:通过从 中返回 3 itemerror,您拒绝了数据,这会清除列并itemchanged再次触发。

至于为什么 PowerBuilder 设计为以这种方式工作的哲学原因,我怀疑他们认为这将遵循最不意外的原则,即他们预计人们会问为什么拒绝输入没有触发itemchanged

问题 2:事件itemchanged覆盖itemerror. 在itemchanged您拒绝输入阻止焦点更改时;在itemerror你现在接受输入,但你没有删除焦点改变的块。您应该从 中返回 2 ,因为您可以通过返回 1 或 3itemchanged来控制是否允许焦点从事件中更改。itemerror


如果有人在没有方便的 powerbuilder 帮助文件的情况下阅读此问题:

返回值itemchanged

0(默认)接受数据值
1 拒绝数据值并且不允许焦点改变(触发 itemerror)
2 拒绝数据值但允许焦点改变(触发 itemerror)

返回值itemerror

0(默认)拒绝数据值并显示错误消息框
1 拒绝数据值但没有消息框
2 接受数据值
3 拒绝数据值但允许焦点更改

于 2009-11-26T14:36:56.373 回答