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

 我来答
成大文化17
2022-10-25 · TA获得超过1.3万个赞
知道大有可为答主
回答量:457
采纳率:0%
帮助的人:71.4万
展开全部

  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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式