使用数据窗口时,很多情况下需要根据用户的输入快速定位到所需记录,这时就需要使用数据窗口的键盘事件进行处理。

下图所示为“部门名称”数据窗口获得焦点后,可显示当前记录的编号,输入编号串后可定位到相应记录,键入回车键后可使输入焦点跳转到下一数据窗口。

为达到上述目的,我们需要改写“部门名称”数据窗口的相关事件。

第一步,为记录用户在此数据窗口内输入的字符串,要为该数据窗口定义如下实例变量: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指定的行。

 

关闭并保存所做的修改,运行当前应用程序。

返回

数据空间