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(thisDescribe(DataWindowColumnCount))
ll_column = thisGetColumn()
if ll_column = ll_column_count then
return
else
thisSetColumn(ll_column + )
end if
用上面脚本须注意几点
() 按Enter键焦点的切换是按所选列的顺序而不是按设置的Taborder的顺序
() 若某列的visible属性为false 或 TabOrder = 则以上方法不起作用
若不合以上要求即所选列的顺序与要录入域顺序不一致或某些列的visible属性为false或 其TabOrder = 此时不能用上述代码但也可用类似方法实现只是稍繁琐一点举例如下
long ll_column
string ls_column_name
ll_column = thisgetcolumn()
ls_column_name = thisDescribe(#+string(ll_column)+Name)
choose case ls_column_name //列名
case no
thisSetColumn(name)
case name
thisSetColumn(age) case age
…
end choose
把消息传递给Tab键同时忽略Enter键的处理这种方法最为方便简洁
在ue_Enterkeydown事件中编写脚本如下
Send(Handle(this)Long())
Return
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程