使用数据窗口时,很多情况下需要根据用户的输入快速定位到所需记录,这时就需要使用数据窗口的键盘事件进行处理。
下图所示为“部门名称”数据窗口获得焦点后,可显示当前记录的编号,输入编号串后可定位到相应记录,键入回车键后可使输入焦点跳转到下一数据窗口。
为达到上述目的,我们需要改写“部门名称”数据窗口的相关事件。
第一步,为记录用户在此数据窗口内输入的字符串,要为该数据窗口定义如下实例变量:c_input字符数组存放输入的所有字符,i_inputcharnum存放已输入的字符个数,为了在用户键入回车键后跳到下一数据窗口时仍停在当前记录行,定义变量i_currrow存放输入回键时数据窗口当前行号。
为让用户直观的查看输入的代码,您可在数据窗口外使用文本标签控件来显示,但缺点是此数据窗口不便于重用。所以在数据窗口内的header区加入一个文本标签code_t用来显示当前代码。
为了让该数据窗口接收键盘消息,为其添加用户事件keydown,其事件编号是pbm_dwnkey。
控件或对象 | 键盘消息的相应事件编号 |
ListView | pbm_lvnkeydown |
RichTextEdit | pbm_renkey |
Tab | pbm_tcnkeydown |
TreeView | pbm_tvnkeydown |
Window | pbm_keydown |
datawindow | pbm_dwnkey |
为改变数据窗口默认的“回车使下一行为当前行”的处理,添加torow事件,事件编号为pbm_custom01。
为事件keydown添加如下代码:(下面三幅图中所示,注意图中代码有重复的部分)
注意上面的代码,为判断用户输入的数字键,需要分别判断主键区的数字键和数字小键盘区的数字键!
(提示:查询键盘编码请查帮助索引"KeyCode enumerated data type:values")
注意上面的代码,分析如何记录用户输入的编码串,如何定位到该编码所在的记录行。
在PB中的数组下标从1开始,所以在数据窗口创建时把用户输入字符数指示变量i_inputcharnum赋值为1。
在数据窗口的rowfocuschanged事件中添加下图中选定的代码,目的是在数据窗口的code_t文本标签中显示当前记录行的编码列。
在torow事件中使数据窗口的当前行回到i_currow指定的行。
关闭并保存所做的修改,运行当前应用程序。
数据空间