明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

PowerBuilder編程技巧4則

[摘要]一、用Enter鍵實(shí)現(xiàn)物件的焦點(diǎn)切換   在PowerBuilder中已定義許多事件所對(duì)應(yīng)的MessageID,而在其所提供的元件, 大部分有對(duì)應(yīng)的keydown事件,其ID值不一定相同,例如在datawindow->pbm_dwnkey, singlelineedit->pbm_ke...
一、用Enter鍵實(shí)現(xiàn)物件的焦點(diǎn)切換
  在PowerBuilder中已定義許多事件所對(duì)應(yīng)的MessageID,而在其所提供的元件,
大部分有對(duì)應(yīng)的keydown事件,其ID值不一定相同,例如在datawindow->pbm_dwnkey,
singlelineedit->pbm_keydown,其他參考使用手冊(cè)。因此先對(duì)使用的元件新增key
的使用者事件,當(dāng)user在元件上按任何按鍵時(shí),將會(huì)觸發(fā)此keydown事件。

  你將獲得所傳的參數(shù)key(按鍵代碼)、keyflags(復(fù)合鍵代碼),當(dāng)所按的
是Enter時(shí),你就把焦點(diǎn)切換到下一元件或下一欄位。

  1.選擇要處理的datawindowcontrol,然後選擇menu的declare的userevents,
此時(shí)會(huì)顯示一個(gè)使用者事件box;
  2.于eventname設(shè)定使用者事件名稱例如:ue_checkkey,然后在eventID填入
pbm_dwnkey(或從Pasteevent選擇),然后按OK;
  3.你可在datawindowcontrols的script中selectevent里發(fā)現(xiàn)多了一個(gè)使用者
事件 ue_checkkey,并且此事件會(huì)傳遞2個(gè)參數(shù)keycodekey,unsignedlongkeyflags;
  4.在script中可以如下填寫:
  choose case key
  case KeyTab!//響應(yīng)按Tab鍵
  //writeyourcode
  case KeyEnter!//響應(yīng)按Enter鍵
 。痺riteyourcode
  case KeyEscape!//響應(yīng)按Esc鍵
 。痺riteyourcode
  end choose
  注意:(1)keycode是Enumeratedatatype,可在onlinehelp或browers中獲得其屬性;
  (2)你可以設(shè)定returnvalue:0或1。
  如果是在DataWindow上,可參考以下的方式:
  在DataWindow宣告一userevent:
  (1)如ue_enter,將EventID參考至pbm_dwnprocessenter;
  (2)在ue_enter加入以下的程式碼
  send(handle(this),256,9,long(0,0))
  return
  二、在MDI視窗內(nèi)加入其他Controls,并使其在sheets視窗中正確顯示
  把MDIWindow的ClientArea打開(Resize)。ClientArea可視為一種Control,PB將
它的名字內(nèi)定為MDI_1。
  //Example//m1,m2,r1,r2areallinteger.
  //movetheclientareatobeginat(m1,m2).mdi_1.Move(WorkspaceX()+m1,WorkspaceY()+m2)
  //Resizetheclientareabasedonthevalue(r1,r2)yougived.mdi_1.Resize(r1,r2)
  需要注意的是ClientArea打開後,區(qū)域內(nèi)的Control會(huì)被蓋掉。
  三、PowerBuilder與CommPort的連接
  1.使用可以控制CommPort的OCX,
例如MicrosoftCommunicationsControl或pdqComm。
  2.InitiatetheOCX。
  //Script如下,ole_1為OCXName
  ole_1.object.CommPort=2
  ole_1.object.Settings=“9600,N,8,1”
  ole_1.object.PortOpen=true
  ole_1.object.InputLen=0
  3.GetData or PutData。
  //GetData
  ole_1.object.input()
  //PutData
  ole_1.object.output=‘ATDT4125678’+char(13)
  四、在 grid中實(shí)現(xiàn)列標(biāo)題覆蓋多列
  選中某列的標(biāo)題title,點(diǎn)右鍵,選properties\position\layer,
選中foreground。這時(shí)你可以改變標(biāo)題的大小。同時(shí)禁止用戶在運(yùn)行程序時(shí)移動(dòng)列的權(quán)利,
在腳本中寫入:dw_1.Modify(“DataWindow.Grid.ColumnMove=No”)  


相關(guān)文章