PB中的MultiLineEdit的改进
软件世界
在众多的数据库应用开发平台中,PowerBuilder以其易用性和先进的数据窗口赢得了60%以上的用户。可是有些控件的使用却与用户的习惯不大相同,比如MultiLineEdit控件,就没有提供直接回车换行(PB提供的是Ctrl+Enter换行)和Ctrl+A全选的功能,新接触的用户都感到不是很方便。
其实只需要简单的API编程即可解决,再自己建立一个UersObject,以后就可以很方便地引用了。
步骤:
1.先在MultiLineEdit的Local External Fanctions中声明一个API函数──keybd_event,如下:
SUBROUTINE keybd_event(uint bVirtualKey,uint bScanCode,ulong dwFlags,ulong dwExtraInfo) LIBRARY "user32.dll"
其作用就是用程序模拟键盘控制。
2.然后在MultiLineEdit中事件栏选择(New Event)自定义一个事件──ue_keydown,其参数如下:
Event Name──ue_keydown
Event ID──pbm_keydown
(选择Event ID后,剩下几项自动生成)
Agument Type──Keycode和unsignedlong
Agument Name──key和keyflags
3.ue_keydown里填写代码如下:
if keydown(KeyControl!) then
//实现Ctrl+A全选的功能
if keydown(KeyA!) then
this.SelectText(1,Len(this.Text))
end if
else
//实现直接回车换行功能
if keydown(KeyEnter!) then
keybd_event( 17,1,0,0 )//Ctrl Depressed
//PB7.0中需要下面两句
keybd_event(13,1,0,0)//Enter Depressed
keybd_event(13,1,2,0)//Enter Released
//PB7.0中需要上面两句
keybd_event(17,1,2,0)//Ctrl Released
end if
end if
其中keybd的参数bVirtualkey可以通过查询MSDN获得,例如13代表Enter键,17代表Ctrl键。
注:以上方法在PowerBuilder7、8环境下调试通过。