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
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器