在使用PowerBuilder開發的應用軟件時,各控件及數據窗口列之間的轉換基本上是使用Tab鍵或鼠標來實現的。而對於一些長期使用基於字符終端的用戶來說,特別是對頻繁、大量處理數據的用戶來說,每輸完一筆數據,必須通過Tab鍵或鼠標跳轉到下一列中,非常不方便,而採用Enter(回車)鍵更便於數據的操作。這裏,筆者介紹幾種將Enter鍵用作Tab鍵的方法:
1.在數據窗口中進行列的跳轉 在用戶具體操作時,數據窗口中Enter鍵的使用頻率最高。在設計時,先打開窗口對象,用鼠標點中要用Enter鍵實現跳轉的數據窗口,選擇菜單項“Declare|User Event”,爲該數據窗口控制定義用戶自定義事件。例如有一個窗口,窗口名爲w_sales,內置數據窗口dw_sales,數據窗口有五個列,列名分別爲column1~column5,定義用戶自定義事件爲“dw_sales_key”,對應PowerBuilder事件號爲pbm_dwnkey。定義好事件後,用鼠標點數據窗口工具欄圖標Script,在select event 中選取事件dw_sales_key進行編程,語句如下:
if keydown(keyenter!)then//判斷按下的是否是Enter鍵
choose case lower(dw_sales.getcolumnname())
case "column1"
dw_sales.setcolumn("column2")
case "column2"
dw_sales.setcolumn("column3")
case "column3"
dw_sales.setcolumn("column4")
case "column4"
dw_sales.setcolumn("column5")
end choose
end if
編程完後,編譯保存,再調用該窗口時,其數據窗口內的列可以用Enter鍵實現跳轉。當然,定義Enter鍵時最好與Tab鍵的跳轉次序一致。其中Tab鍵的跳轉次序可以通過定義數據窗口菜單欄的“Design|Tab Order”項進行定義。當然,也可以不定義用戶自定義事件,而直接在數據窗口的ItemChanged事件下寫入如下語句:
int i
i=dw_sales.getcolumn()
if keydown(keyenter!) and i< 6 then
dw_sales.setcolumn(i+1)
end if
也可實現數據列之間的跳轉。注意,以上均是基於數據插入狀態而言的。而對數據查詢就另當別論了,按上面的語句進行編程,在查詢時,按回車鍵,光標會往下跳,而不是按行逐列查詢,這主要是系統定義Tab鍵時,認定回車時列號不變,而行號遞變,故用上面的方法會引起錯位。若要完全替代Tab鍵功能,還必須做其它方面的工作。在上面的兩種方法中,前者語句太長,而後者必須爲當前列值有所改變時,按Enter鍵才能跳轉。爲此,可採取另一種方法:定義用戶自定義事件,其中事件號爲pbm_dwnprocessenter,該事件編程語句爲:
int i
i=dw_sales.getcolumn()
dw_sales.setcolumn(i+1)
就可實現跳轉功能,同時又避免出現以上問題。
2.窗口中各控件之間的跳轉 在窗口中,由於各控件的類型不一樣,設置跳轉就相對複雜一些。讀者可以通過按Enter鍵後焦點的移動來設置各控件的跳轉。如果各控件是同類型的,情況就好辦得多。這裏,筆者舉一個例子:窗口仍然爲w_sales,上面有五個Commandbutton控件,分別爲cb_1~cb_5,在窗口事件key中編寫以下語句:
graphicobject i
int j=0
i=getfocus()
if keydown(keyenter!)then
if j=1 then
j=0
return
end if
post (handle(I),256,9,0)
j=1
end if
這樣,在運行該窗口時,按下Enter鍵,就可以實現該五個控件之間的跳轉。若要在數據窗口中錄完最後一個列值,按Enter鍵跳轉到控件上,可以在筆者舉的第一個例子中增加以下語句:
case"column5"
setfocus(cb_1)
即可。
在PB中用Enter鍵實現跳轉的幾種方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
PB數據窗口導出到EXCEL函數
落伍的小农
2018-08-27 17:49:20
PB讀取EXCEL文件
javaxi
2018-08-27 07:53:32
WIN7 環境裏PB裏面添加控件OLE,選擇insertcontrol選項卡就會報錯自動關閉解決辦法
鲨鱼饿了
2018-08-27 04:26:34
PB9常見錯誤及含義
鲨鱼饿了
2018-08-27 04:26:34
數據窗口保存拖動位置後的列順序
squally
2018-08-27 00:39:57
數據窗口實現鼠標拖選框
squally
2018-08-27 00:39:20
數據窗口實現與excel雙向複製和粘貼
squally
2018-08-27 00:39:20
如何使PB窗口總在最上層
hnas_better
2018-08-27 00:29:22
在PB程序中如何設置打印機?
hnas_better
2018-08-27 00:29:22
PB樹形控件勾選聯動
孤独剑888
2018-08-26 22:51:16
打算用PB寫一個供應商返利的程序
xiwimi
2018-08-26 05:48:41
pb函數庫之數據類型檢查與轉換函數
vvtigervv
2018-08-25 22:43:39
pb函數庫之日期、時間函數
vvtigervv
2018-08-25 22:43:35
PB中部分sqlca.sqlcode值的意義
vvtigervv
2018-08-25 22:43:33