其他语言

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

PowerBuilder编程实用技巧汇集


发布日期:2023年11月29日
 
PowerBuilder编程实用技巧汇集
用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)

上一篇:C++/CLI基本数据类型探索

下一篇:让PowerBuilder制作查询系统的界面更加酷[2]