pb数据窗口回车替换Tab,上下键的处理.:
在datawindow中见userevent 选择pb_dwnprocessenter 事件名称key;代码如下:
if keydown(keyenter!) then
Send(Handle(this),256,9,Long(0,0)) //发送TAB键
Return 1 //取消原ENTER键的动作
end if
使用windwosuser32.dll
声明全局函数:
//global external functions 中定义一个API:
Subroutine keybd_event(int bVk,int bScan,ulong dwFlags,ulong dwExtraInfo) LIBRARY "user32.dll"
再在datawindow建一事件ue_keydown 代码如下:
If key = KeyEnter! Or Key = KeyRightArrow! Then
keybd_event ( 9, 0, 0 , 0 ) // 按下tab
keybd_event ( 9, 0, 2, 0 ) // 释放tab
Return 1
End If
If Key = KeyleftArrow! Then
keybd_event ( 16, 0, 0, 0 ) // 按下shift
keybd_event ( 9, 0, 0 , 0 ) // 按下tab
keybd_event ( 9, 0, 2, 0 ) // 释放tab
keybd_event ( 16, 0, 2, 0 ) // 释放shift
Return 1
End If
一切ok

在PowerBuilder的数据窗口中,通过UserEvent处理Enter键和上下左右键的行为。利用`pb_dwnprocessenter`事件及Windows API `keybd_event`模拟Tab键和方向键的操作,实现回车键等效于Tab,左右箭头键配合Tab移动焦点。
1842





