PowerBuilder滑鼠移入移出事件

2021-08-22 13:33:34 字數 2164 閱讀 5733

powerbuilder中只有視窗和富文字有mouse事件外,其他都沒有

powerbuiler中沒有滑鼠移入移出的直接事件,需要我們自己定義

1.首先需要定義乙個結構,用來儲存滑鼠的座標(position)

2.宣告兩個全域性外部函式

3.新增timer

在在視窗的open事件或者某個觸發事件中新增如下**:

timer(0.1)//設定計時器,計時間隔為0.1秒

4.在視窗的timer事件中新增如下**

position mypa

getcursorpos(mypa)//獲取當前游標位置

screentoclient(handle(this),mypa)//轉化為客戶區表示

integer li_xpos,li_ypos

li_xpos = mypa.xpos

li_ypos = mypa.ypos

st_2.text = string(li_xpos) + ',' + string (li_ypos)

integer li_dww,li_dwh

li_dww = this.tv_parentid.width//獲取資料視窗的width屬性(單位是pb units)

li_dwh = this.tv_parentid.height//獲取資料視窗的height屬性(單位是pb units)

li_dww = unitstopixels(li_dww,xunitstopixels!)//把用pb units為單位的width轉化為用pixels為單位

li_dwh = unitstopixels(li_dwh,yunitstopixels!)//把用pb units為單位的height轉化為用pixels為單位

st_3.text = string(li_dww) + ',' + string (li_dwh)

integer li_dwx,li_dwy

li_dwx = this.tv_parentid.x//獲取資料視窗的x屬性(與視窗左邊界的距離,單位是pb units)

li_dwy = this.tv_parentid.y//獲取資料視窗的y屬性(與視窗上邊界的距離,單位是pb units)

li_dwx = unitstopixels(li_dwx,xunitstopixels!)//把用pb units為單位的x轉化為用pixels為單位

li_dwy = unitstopixels(li_dwy,yunitstopixels!)//把用pb units為單位的y轉化為用pixels為單位

st_4.text = string(li_dwx) + ',' + string (li_dwy)

if li_xpos < li_dwx or li_ypos < li_dwy or li_xpos > li_dwx + li_dww or li_ypos > li_dwy + li_dwh then

w_departmentdetail.backcolor=rgb(0, 0, 255)//游標在控制項外,背景為為藍色

else

w_departmentdetail.backcolor=rgb(255, 0, 0)//游標在控制項內,背景為紅色

end if

5.效果圖

中間的灰色區域是我的資料視窗tv_department

右側的三行數分別為:st_2,st_3,st_4

powerbuilder日期函式

pb系統函式 之 日期時間函式day 功能得到日期型資料中的號數 1到31之間的整數值 語法day date 引數date 要得到號數的日期值返回值 integer。函式執行成功時返回號數 1到31之間的整數值 如果date引數的值為null,則day 函式返回null。dayname 功能得到指定...

PowerBuilder常用技巧

1 怎樣對分組裡的行加上序號,要求每個組裡行的序號從1開始!datawindow物件,用計算域 做分組組號 cumulativesum if 分組列名 1 分組列名 0 0,1 for all 做組內編號 getrow first getrow for group 1 1 2 去掉分組資料視窗的分頁...

PowerBuilder 未公開函式

原文 已知乙個dw中的某列的列名 在字串變數中 以獲得這個列物件的dwo 方法是 dwobject ldwo use,ldwo name ldwo use dw 1.object ldwo name ldwo use.get attribute name false 這樣就可以在用setitem 設...