PowerBuilder鼠标移入移出事件

PowerBuilder中只有窗口和富文本有mouse事件外,其他都没有

PowerBuiler中没有鼠标移入移出的直接事件,需要我们自己定义

1.首先需要定义一个结构,用来存储鼠标的坐标(position)

2.声明两个全局外部函数

FUNCTION ulong GetCursorPos(ref position lpPoint) LIBRARY "user32.dll"
FUNCTION ulong ScreenToClient(ulong hwnd,ref position lpPoint) LIBRARY "user32.dll"

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
————————————————
版权声明:本文为CSDN博主「ClearLoveQ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ClearLoveQ/article/details/81541452

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值