一用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)
From:http://tw.wingwit.com/Article/program/PB/201311/24571.html