今天在制作一張發(fā)貨單的過程中發(fā)現(xiàn)了一個問題。
在發(fā)貨單的datawindow的一個checkbox復選框clicked事件中,添加如下代碼:
dw_detail.accepttext()messagebox("",row)if dwo.name="unfinished" then if dw_detail.getitemnumber(row,"unfinished")=1 then dw_detail.deleterow(row) end ifend if
發(fā)現(xiàn)datawindow的clicked的方法,在鼠標單擊時激活事件,而不是單擊后激活事件。既:鼠標按下-->激活事件-->鼠標彈起-->checkbox值改變
正常情況下,或者按字面意思理解 clicked 應該是在 鼠標按下-->鼠標彈起 過程結束后激活事件。之后我在PowerBuild的Window里使用控件測試Clicked事件 和在 C#的Winform里使用控件測試Click事件,均是鼠標單擊后激活事件。
既:鼠標按下-->鼠標彈起-->激活事件
查看了下PB的API,里面寫的鼠標單擊執(zhí)行,并沒有特別聲明是單擊后,還是單擊時激活事件。產生的問題:在clicked下執(zhí)行該段代碼,多行checkbox情況下,會刪除選中行后,下一行checkbox改變值,導致數(shù)據(jù)錯誤。
后來分別嘗試了 getfocus(這個必須在方法中給某個字段設置焦點時激活) 和 editchanged(這個不捕捉checkbox值改變) 均失敗?磥碇荒芾@過這個問題,換其他方式解決了。
悲劇,代碼語言里找不到PB語言,但愿快點淘汰這玩意吧!雖然datawindow真的很好用!