PowerBuild語言不怎麼流行,因為公司系統的原因開始接觸這門語言,至今已有半年。
今天在製作一張發貨單的過程中發現了一個問題。
在發貨單的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 if
end if
發現datawindow的clicked的方法,在按一下滑鼠時啟用事件,而不是單擊後啟用事件。
既:滑鼠按下-->啟用事件-->滑鼠彈起-->checkbox值改變
正常情況下,或者按字面意思理解 clicked 應該是在 滑鼠按下-->滑鼠彈起 過程結束後啟用事件。
之後我在PowerBuild的Window裡使用控制項測試Clicked事件 和在 C#的Winform裡使用控制項測試Click事件,均是按一下滑鼠後啟用事件。
既:滑鼠按下-->滑鼠彈起-->啟用事件
查看了下PB的API,裡面寫的按一下滑鼠執行,並沒有特別聲明是單擊後,還是單擊時啟用事件。
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[蕩漾的分割線[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
產生的問題:在clicked下執行該段代碼,多行checkbox情況下,會刪除選中行後,下一行checkbox改變值,導致資料錯誤。
後來分別嘗試了 getfocus(這個必須在方法中給某個欄位設定焦點時啟用) 和 editchanged(這個不捕捉checkbox值改變) 均失敗。看來只能繞過這個問題,換其他方式解決了。
悲劇,代碼語言裡找不到PB語言,但願快點淘汰這玩意吧!雖然datawindow真的很好用!