PB数据窗口中用Enter键替代Tab键切换栏目
PB中数据窗口输入栏目(域)间的切换通过按键盘最左边的Tab 键来实现 如果要用Enter键替代Tab 键切换栏目 实现焦点的转移 该怎么办?
由于按Enter键是Windows直接支持的消息 故我们可以使用用户事件来解决此问题 在用户事件中 PowerBuilder提供的一条pbm_事件对应Windows的一条或几条消息 我们在数据窗的用户事件中选择pbm_dwnProcessEnter并命名为ue_Enterkeydown 当我们按下Enter键时 将触发此事件
提供两种方法(推荐用第二种)
利用数据窗口的SetColumn函数
在所定义的ue_Enterkeydown事件下写代码
long ll_column_count
long ll_column
ll_column_count =long(this Describe( DataWindow Column Count ))
ll_column = this GetColumn()
if ll_column = ll_column_count then
return
else
this SetColumn(ll_column + )
end if
用上面脚本 须注意几点
( ) 按Enter键 焦点的切换是按所选列的顺序 而不是按设置的Taborder的顺序
( ) 若某列的visible属性为false 或 TabOrder = 则以上方法不起作用
若不合以上要求 即所选列的顺序与要录入域顺序不一致 或某些列的visible属性为false或 其TabOrder = 此时不能用上述代码 但也可用类似方法实现 只是稍繁琐一点 举例如下
long ll_column
string ls_column_name
ll_column = this getcolumn()
ls_column_name = this Describe( # +string(ll_column)+ Name )
choose case ls_column_name //列名
case no
this SetColumn( name )
case name
this SetColumn( age ) case age
…
end choose
把消息传递给Tab键 同时忽略Enter键的处理 这种方法最为方便简洁
在ue_Enterkeydown事件中编写脚本如下
Send(Handle(this) Long( ))
Return
编辑推荐
ASP NET开发培训视频教程
lishixinzhi/Article/program/PB/201311/24603