科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件数据窗口中用Enter键替代Tab键切换栏目

数据窗口中用Enter键替代Tab键切换栏目

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

PB中数据窗口输入栏目(域)间的切换通过按键盘最左边的Tab 键来实现,如果要用Enter键替代Tab 键切换栏目,实现焦点的转移,该怎么办?

作者:51cto.com整理 来源:51cto.com 2007年9月15日

关键字: 窗口 Enter Tab 切换栏目 软件

  • 评论
  • 分享微博
  • 分享邮件

PB中数据窗口输入栏目(域)间的切换通过按键盘最左边的Tab 键来实现,如果要用Enter键替代Tab 键切换栏目,实现焦点的转移,该怎么办?

由于按Enter键是Windows直接支持的消息,故我们可以使用用户事件来解决此问题。 在用户事件中,PowerBuilder提供的一条pbm_事件对应Windows的一条或几条消息。我们在数据窗的用户事件中选择pbm_dwnProcessEnter并命名为ue_Enterkeydown。当我们按下Enter键时,将触发此事件。



提供两种方法(推荐用第二种):

1.利用数据窗口的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 + 1)

end if

用上面脚本,须注意几点:

(1) 按Enter键,焦点的切换是按所选列的顺序,而不是按设置的Taborder的顺序。

(2) 若某列的visible属性为false 或 TabOrder = 0, 则以上方法不起作用。

若不合以上要求,即所选列的顺序与要录入域顺序不一致,或某些列的visible属性为false或 其TabOrder = 0,此时不能用上述代码,但也可用类似方法实现,只是稍繁琐一点,举例如下:

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

2.把消息传递给Tab键,同时忽略Enter键的处理,这种方法最为方便简洁。在ue_Enterkeydown事件中编写脚本如下:

Send(Handle(this),256,9,Long(0,0))

Return 1

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章