PowerBuilder编程实用技巧汇集
在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 并且此事件会传递 个参数keycodekey unsignedlongkeyflags 在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可视为一种Control PB将它的名字内定为MDI_ //Example//m m r r areallinteger //movetheclientareatobeginat(m m ) mdi_ Move(WorkspaceX()+m WorkspaceY()+m ) //Resizetheclientareabasedonthevalue(r r )yougived mdi_ Resize(r r ) 需要注意的是ClientArea打开后 区域内的Control会被盖掉 三 PowerBuilder与CommPort的连接 .使用可以控制CommPort的OCX 例如MicrosoftCommunicationsControl或pdqComm .InitiatetheOCX //Script如下 ole_ 为OCXName ole_ object CommPort= ole_ object Settings= N ole_ object PortOpen=true ole_ object InputLen= GetData or PutData //GetData ole_ object input() //PutData ole_ object output= ATDT +char( )
四 在 grid中实现列标题覆盖多列
lishixinzhi/Article/program/PB/201311/24571