当前位置: 代码迷 >> PB >> 在做DW里的image具有按下弹直的效果中出有关问题啦
  详细解决方案

在做DW里的image具有按下弹直的效果中出有关问题啦

热度:128   发布时间:2016-04-29 10:30:59.0
在做DW里的image具有按下弹直的效果中出问题啦
当我只在那个对象上按下而拖动鼠标在其它地方弹起时,那个image状态不会变回原来的状态?
我在对象的lostfoucus 写了事件可以当鼠标已离开了时,它的状态还是不变,直到点了其它的对象

------解决方案--------------------
这个比较麻烦,需要在mouse里写代码控制

定义API:
FUNCTION ulong SetCapture(ulong hwnd) LIBRARY "user32.dll"
FUNCTION ulong ReleaseCapture() LIBRARY "user32.dll"
事例变量 ib_mousein = false

mousemove event:
if ib_mousein <>(xpos>0 and ypos>0 and xpos<width and ypos<height)then return
ib_mousein = not ib_mousein
if ib_mousein then
SetCapture( handle( this ) )
//这里写鼠标进入控件的
else
ReleaseCapture( )
//这里写鼠标离开的
end if

------解决方案--------------------
不是lostfocus事件而是mousemove事件

在把我昨天给你的代码稍加修改即可

首先设定一局部变量 String is_focus_picture //当前获焦点的图片名

在u_down事件中
If dw_main.Modify(ls_object + ".Border='5'") = "" Then
is_focus_picture = ls_object//当鼠标左键按下时,设置当前获得焦点的图片名
End If

在mousmove中

Integer li_picture_sum, i, li_pos
String ls_object

ls_object = Lower(dw_main.GetObjectAtPointer())
li_pos = Pos(ls_object, "~t")
if li_pos>0 then
ls_object = Left(ls_object, li_pos - 1)
if ls_object =is_focus_picture then
else
Modify(is_focus_picture + ".Border='6'") //设置图片弹起效果
end if
else
Modify(is_focus_picture + ".Border='6'") //设置图片弹起效果
end if

上面代码未经测试,请楼主自行完善一下
  相关解决方案