时间: 2021-07-31 作者:daque
一、用enter键实行物件的中心切换 在powerbuilder中已设置很多事变所对应的messageid,而在其所供给的元件, 大局部有对应的keydown事变,其id值不确定沟通,比方在datawindow->pbm_dwnkey, singlelineedit->pbm_keydown,其余参考运用画册。所以先对运用的元件新增key 的运用者事变,当user在元件上按任何按键时,将会触发此keydown事变。 你将赢得所传的参数key(按键代码)、keyflags(复合键代码),当所按的 是enter时,你就把中心切换到下一元件或下一栏位。 1.采用要处置的datawindowcontrol,然後采用menu的declare的userevents, 此时会表露一个运用者事变box; 2.于eventname设定运用者事变称呼比方:ue_checkkey,而后在eventid填入 pbm_dwnkey(或从pasteevent采用),而后按ok; 3.你可在datawindowcontrols的script中selectevent里创造多了一个运用者 事变 ue_checkkey,而且此事变会传播2个参数keycodekey,unsignedlongkeyflags; 4.在script中不妨如次填写: choose case key case keytab!//相应按tab键 //writeyourcode case keyenter!//相应按enter键 //writeyourcode case keyescape!//相应按esc键 //writeyourcode end choose 提防:(1)keycode是enumeratedatatype,可在onlinehelp或browers中赢得其属性; (2)你不妨设定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视窗内介入其余controls,并使其在sheets视窗中精确表露 把mdiwindow的clientarea翻开(resize)。clientarea可视为一种control,pb将 它的名字预定为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翻开後,地区内的control会被盖掉。 三、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中实行列题目掩盖多列 选中某列的题目title,点右键,选properties\position\layer, 选中foreground。这时候你不妨变换题目的巨细。同声遏止用户在运路途序时挪动列的权力, 在剧本中写入:dw_1.modify(“datawindow.grid.columnmove=no”)