PB用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)  
發佈了31 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章