其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

PowerBuilder编程技巧四则[1]


发布日期:2018年04月29日
 
PowerBuilder编程技巧四则[1]
用Enter键实现物件的焦点切换

在PowerBuilder中已定义许多事件所对应的MessageID而在其所提供的元件

大部分有对应的keydown事件其ID值不一定相同例如在datawindow->pbm_dwnkey

singlelineedit->pbm_keydown其他参考使用手册因此先对使用的元件新增key

的使用者事件当user在元件上按任何按键时将会触发此keydown事件

你将获得所传的参数key(按键代码)keyflags(复合键代码)当所按的

是Enter时你就把焦点切换到下一元件或下一栏位

选择要处理的datawindowcontrol然后选择menu的declare的userevents

此时会显示一个使用者事件box

于eventname设定使用者事件名称例如:ue_checkkey然后在eventID填入

pbm_dwnkey(或从Pasteevent选择)然后按OK

你可在datawindowcontrols的script中selectevent里发现多了一个使用者

事件 ue_checkkey并且此事件会传递个参数keycodekeyunsignedlongkeyflags

在script中可以如下填写

choose case key

case KeyTab!//响应按Tab键

//writeyourcode

case KeyEnter!//响应按Enter键

//writeyourcode

case KeyEscape!//响应按Esc键

//writeyourcode

end choose

注意()keycode是Enumeratedatatype可在onlinehelp或browers中获得其属性

()你可以设定returnvalue:

如果是在DataWindow上可参考以下的方式:

在DataWindow宣告一userevent:

()如ue_enter将EventID参考至pbm_dwnprocessenter

()在ue_enter加入以下的程式码

send(handle(this)long())

return

在MDI视窗内加入其他Controls并使其在sheets视窗中正确显示

把MDIWindow的ClientArea打开(Resize)ClientArea可视为一种ControlPB将

它的名字内定为MDI_

//Example//mmrrareallinteger

//movetheclientareatobeginat(mm)mdi_Move(WorkspaceX()+mWorkspaceY()+m)

//Resizetheclientareabasedonthevalue(rr)yougivedmdi_Resize(rr)

需要注意的是ClientArea打开后区域内的Control会被盖掉

[] []

               

上一篇:PowerBuilder编程技巧四则[2]

下一篇:C++基础:怎样判断某一文件是否存在