用Enter鍵替代Tab鍵切換欄目的資料窗

happymagic發表於2016-04-08

用Enter鍵替代Tab鍵切換欄目的資料窗

許多情況下,PowerBuilder應用的資料是通過資料窗輸入的,而且輸入的資料是單純的數字資料,也就是說,輸入內容完全可以通過敲擊鍵盤右面的數字小鍵盤來完成。但在實際使用中,資料窗欄目間的切換卻要通過按鍵盤最左邊的Tab鍵來實現,既不方便又影響錄入速度。如果能用Enter鍵替代Tab鍵切換欄目就好了。由於按Enter鍵是Windows直接支援的訊息,故我們可以使用使用者事件來解決問題。在使用者事件中,PowerBuilder提供的一條pbm_事件對應Windows的一條或幾條訊息。我們在資料窗dw_datamon的使用者事件中選擇pbm_dwnProcessEnter並命名為Enterkeydown。在該事件下寫程式碼
Send(Handle(this),256,9,Long(0,0))
This.SetActionCode(1)
這將把訊息傳遞給Tab鍵,同時忽略Enter鍵的處理。下面是一段用資料窗接收資料的完整的程式段,其中採用了用Enter鍵替代Tab鍵的程式碼。當游標在每行最後一列時按Enter鍵,游標會移至下一行第一列;當游標在最後一行的最後一列時按Enter鍵,會自動產生新行並將游標置於該行的第一列;在其它情況下按Enter鍵,游標會移至當前行的下一列。這段程式仍然寫在與pbm_dwn ProcessEnter相對應的使用者事件Enterkeydown下:
IF This.AcceptText()<0 then
this.setactioncode(1) return
endif
if this.getcolumn()=Long(This.DwDescribe("datawindow.column.count")) then
if this.getrow()=This.RowCount() then
this.insertrow(0)
this.scrolltorow(this.getrow()+1)
this.setcolumn(1)
this.setactioncode(1)
return
endif
endif
send(handle(this),256,9,long(0,0))
this.setactioncode(1)

相關文章