一用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与CommPort的连接
.使用可以控制CommPort的OCX例如MicrosoftCommunicationsControl或pdqComm
.InitiatetheOCX
//Script如下ole_为OCXName
ole_objectCommPort=
ole_objectSettings=N
ole_objectPortOpen=true
ole_objectInputLen=
GetData or PutData
//GetData
ole_objectinput()
//PutData
ole_objectoutput=ATDT+char()
四在 grid中实现列标题覆盖多列
选中某列的标题title点右键选propertiespositionlayer选中foreground这时你可以改变标题的大小同时禁止用户在运行程序时移动列的权利在脚本中写入dw_Modify(DataWindowGridColumnMove=No)