powbuilder学习吧 关注:2贴子:17
  • 1回复贴,共1

PB输入数据窗口中实现用Enter键是焦点在各列中切换

只看楼主收藏回复

由于按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 


IP属地:河北1楼2008-06-20 11:28回复
    PB+SQL超级开发框架源码

    详细介绍:http://www.kaishi8.com/bckj.htm

    下载地址:http://www.pimaonet.com/pbsql.rar


    IP属地:河北2楼2008-06-27 14:18
    回复