2009-11-25 38 views
4

在PB6.5.1和PB9.0:兩個有關itemchanged問題和itemerror事件

問題1: 在itemchanged事件: 回報1 在itemerror事件: 回報3 在運行時,序列觸發的事件是: itemchanged - > itemerror - > itemchanged - > itemerror 爲什麼每個事件觸發了兩次

問題2: 在itemchanged事件: 回報1 在itemerror事件: return 2 在運行時,焦點沒有移動到下一個單元格。 爲什麼?

謝謝。

回答

5

問題1:通過從itemerror返回3,你拒絕了數據,從而清除列,並再次觸發itemchanged

至於爲什麼PowerBuilder被設計成以這種方式工作,我懷疑他們認爲它會遵循最令人驚訝的原則,即他們期待人們問爲什麼拒絕輸入不會觸發itemchanged

問題2:itemchanged事件重寫itemerror。在itemchanged中,您拒絕了輸入以防止焦點更改;在itemerror中,您現在接受輸入,但您尚未刪除焦點更改的塊。你應該從itemchanged返回2,因爲你可以進而控制是否允許焦點從itemerror事件改變,通過返回1或3


如果未經PowerBuilder的幫助文件方便的在讀這個問題:

itemchanged返回值:

0(默認值)接受數據值
1拒絕的數據值和不允許焦點改變(觸發器itemerror)
2拒絕的數據值,但允許焦點改變(觸發itemerror)

itemerror返回值:

0(默認值)拒絕的數據值,並顯示一個錯誤消息盒
1拒絕沒有消息框的數據值
2接受數據值
3拒絕數據值但允許焦點更改

+0

感謝您的回答。 在PowerBuilder的幫助文件中沒有提到返回3的itemerror事件會觸發itemchanged事件,不是嗎? – user218765 2009-11-27 19:53:23

+0

聯機文檔中的相關頁面(請參閱ItemChanged和ItemError):http://infocenter.sybase.com/help /topic/com.sybase。dc37783_1150/HTML/dwref/BABCJGCA.htm – 2009-11-30 16:52:54