在DataWindows里,怎样发Shift+Tab事件?

bjay 2004-07-09 05:37:08
如题。
我要实现的是,在pbm_dwnkey事件中将当用户按Enter键时,改为“Shift+Tab”键。

在线等待,试成结帖。
...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerlxg 2004-07-09
  • 打赏
  • 举报
回复
差不多就是那样了。
bjay 2004-07-09
  • 打赏
  • 举报
回复
结帖。
也许jxc(GameHeart) 的是个纯PB实现,但我试了一下,有些不能令人满意。也许是我试验的不够好。

LIUYANG007(蓝雨) 的方法完全适合我的实现。

再次谢谢两位!
bjay 2004-07-09
  • 打赏
  • 举报
回复
谢谢两 位,我马上就试。
jxc 2004-07-09
  • 打赏
  • 举报
回复
纯pb的方案,实现Tab,要Shift+Tab需要稍许改动:

//============================= [Start] ==============================
// 函数: f_dw_tab
//
// 参数: [value] datawindow adw_dw :
//
// 返回: [integer]
//
// 描述: 在数据窗口中模拟发送Tab键
//
//--------------------------------------------------------------------
// 创建: 2004-07-09 jxc 最终修改: 2004-07-09
//
//============================== [End] ===============================
String ls_cname, ls_cid
Long ll_col_count, ll_col_id

ls_cname = adw_dw.GetColumnName ()
ll_col_count = Long ( adw_dw.Object.DataWindow.Column.Count )

ls_cid = adw_dw.Describe ( ls_cname + '.id' )
IF IsNumber ( ls_cid ) THEN ll_col_id = Long ( ls_cid )

IF ll_col_id < ll_col_count THEN
ll_col_id ++
adw_dw.SetColumn ( ll_col_id )
ELSE
Long ll_row, ll_row_count
ll_row = adw_dw.GetRow ()
ll_row_count = adw_dw.RowCount ()

IF ll_row < ll_row_count THEN
adw_dw.SetColumn ( 1 )
adw_dw.SetRow ( ll_row + 1 )
END IF
END IF

RETURN 1
LIUYANG007 2004-07-09
  • 打赏
  • 举报
回复
声明函数:
subroutine keybd_event(uint bVk,uint bScan,long dwFlags,long dwExtraInfo ) library 'user32.dll'

定义用户事件keydown:pbm_dwnkey。
在事件中编程:

integer VK_TAB = 09
integer VK_SHIFT = 16

if key = KeyEnter! then
keybd_event(VK_SHIFT,0,0,0) //按下shift
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
keybd_event(VK_SHIFT,0,2,0) //释放shift
return 1
end if


1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧