找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5019|回复: 53

[求助] opendcl中图形按钮 鼠标移到上面时如何变色

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2014-11-18 20:03:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
opendcl中图形GraphicButton按钮 鼠标移到上面时如何变色
我设置图形按钮的style 为flat 鼠标移动上去时会凸起来
但颜色是原色,我想移动到按钮上时不但凸起,还变换成想要的颜色
用onmove()事件可以实现,但该函数触发频率太高,不停的刷新图形
导致一闪一闪的。有没有其它隐含事件或实现方法,求高手指点。
(defun c:DJCADToolsDock/Form1/GraphicButton2#OnMouseMove (Flags X Y /)
  (dcl-MessageBox "To Do: code must be added to event handler\r\nc:DJCADToolsDock/Form1/GraphicButton2#OnMouseMove" "To do")

This event is triggered when the mouse moves over the control. The event handler for this event should return quickly, as the event is called many times while the mouse is moving. Flags describes the state of the [Shift] and [Ctrl] keys, and the mouse buttons. X and Y specify the control client coordinates where the event occurred.

求大神指点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-18 20:13:44 | 显示全部楼层
你可以设置下,进到按钮和 出来前,只刷新一次啊。

点评

多谢指教,我就是这样判断的,但是只要触发该事件,不改变颜色,CAD也会刷新UI,只改变一次颜色也不行  详情 回复 发表于 2014-11-18 20:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-18 20:21:10 | 显示全部楼层
先判断是否进入,然后判断颜色,正确了就不要改
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-18 20:45:13 | 显示全部楼层
newer 发表于 2014-11-18 20:13
你可以设置下,进到按钮和 出来前,只刷新一次啊。

多谢指教,我就是这样判断的,但是只要触发该事件,不改变颜色,CAD也会刷新UI,只改变一次颜色也不行

点评

把你代码贴上来,你进去后,加个变量判断,两个变量都满足才刷新。只鼠标进去,另外一个不满足不刷新。  详情 回复 发表于 2014-11-18 20:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-18 20:49:01 | 显示全部楼层
xdj86 发表于 2014-11-18 20:45
多谢指教,我就是这样判断的,但是只要触发该事件,不改变颜色,CAD也会刷新UI,只改变一次颜色也不行

把你代码贴上来,你进去后,加个变量判断,两个变量都满足才刷新。只鼠标进去,另外一个不满足不刷新。

点评

(defun actbkcolor(n btnprefix /) (if (= InwhatbTn 0) (progn (setq InwhatbTn n) (dcl-Control-SetBackColor (eval(read(strcat btnprefix (itoa InwhatbTn)))) bkcolor) ) (princ) )  详情 回复 发表于 2014-11-18 21:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-18 21:01:12 | 显示全部楼层
newer 发表于 2014-11-18 20:49
把你代码贴上来,你进去后,加个变量判断,两个变量都满足才刷新。只鼠标进去,另外一个不满足不刷新。

(defun actbkcolor(n btnprefix /)
  
(if  (= InwhatbTn 0)
   (progn
   (setq InwhatbTn n)
   (dcl-Control-SetBackColor (eval(read(strcat btnprefix (itoa InwhatbTn)))) bkcolor)
   )
(princ)
)

(if (/= InwhatbTn n)
    (progn
      
     ;(princ (strcat strTextbutton (itoa InwhatbTn)))
     (dcl-Control-SetBackColor (eval(read(strcat btnprefix (itoa InwhatbTn)))) -16)
     (setq InwhatbTn n)
     (dcl-Control-SetBackColor (eval(read(strcat btnprefix (itoa InwhatbTn)))) bkcolor)
    )
   (princ)
)
  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;变换图片函数

;;工具按钮Onmove动作函数
(defun c:DJCADToolsDock/Form1/TextButton1#OnMouseMove (Flags X Y /)
;(princ (strcat strTextbutton (itoa InwhatbTn)))

  (actbkcolor 1 strTextbutton)

)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-18 21:03:53 | 显示全部楼层
这个函数只要触发,CAD就会刷新UI

点评

看你的代码,不管什么条件,都要执行 (dcl-Control-SetBackColor 了,那肯定鼠标移动就设置背景色了,你不能限制下吗?  详情 回复 发表于 2014-11-18 21:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-18 21:05:04 | 显示全部楼层
而且命令行会不停的出现空行(princ)造成的,能解决么
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-18 21:14:05 | 显示全部楼层
xdj86 发表于 2014-11-18 21:03
这个函数只要触发,CAD就会刷新UI

看你的代码,不管什么条件,都要执行  (dcl-Control-SetBackColor 了,那肯定鼠标移动就设置背景色了,你不能限制下吗?

点评

InwhatbTn就是全局变量来判断是否进入的,如果InwhatbTn=0,是没有进入任何一个按钮范围,如果InwhatbTn=n, 则是一直在同一个按钮中,就不会执行。程序只在InwhatbTn=0和InwhatbTn/=n的情况下执行。  详情 回复 发表于 2014-11-18 21:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-18 21:23:30 | 显示全部楼层
newer 发表于 2014-11-18 21:14
看你的代码,不管什么条件,都要执行  (dcl-Control-SetBackColor 了,那肯定鼠标移动就设置背景色了,你 ...

InwhatbTn就是全局变量来判断是否进入的,如果InwhatbTn=0,是没有进入任何一个按钮范围,如果InwhatbTn=n,
则是一直在同一个按钮中,就不会执行。程序只在InwhatbTn=0和InwhatbTn/=n的情况下执行。

点评

那你进去以后,在setBackColor前,不能再设置一个全局变量吗?执行过一次,即使在进到这,也不刷新了。  详情 回复 发表于 2014-11-18 21:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-18 21:35:55 | 显示全部楼层
xdj86 发表于 2014-11-18 21:23
InwhatbTn就是全局变量来判断是否进入的,如果InwhatbTn=0,是没有进入任何一个按钮范围,如果InwhatbTn= ...

那你进去以后,在setBackColor前,不能再设置一个全局变量吗?执行过一次,即使在进到这,也不刷新了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-11-18 21:49:31 来自手机 | 显示全部楼层
不能先 get 下? 等于了就不 set
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2014-11-18 21:50:10 | 显示全部楼层
OnMouseMove是系统判定的

点评

是系统判定的,但是你进去后,是否setback 是你决定的,你判断下已经setback一次了,就在也别做了,等鼠标移出控件后,你在把那个变量设回去,再进去的时候还允许一次。  详情 回复 发表于 2014-11-18 22:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-18 22:14:00 | 显示全部楼层
xdj86 发表于 2014-11-18 21:50
OnMouseMove是系统判定的

OnMouseMove 是系统判定的,但作什么是你决定的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-18 22:16:43 | 显示全部楼层
xdj86 发表于 2014-11-18 21:50
OnMouseMove是系统判定的

是系统判定的,但是你进去后,是否setback 是你决定的,你判断下已经setback一次了,就在也别做了,等鼠标移出控件后,你在把那个变量设回去,再进去的时候还允许一次。

点评

我发现问题了,是onmove函数触发的时候不是刷新UI,是会在命令行产生空行,CAD不停的响应  详情 回复 发表于 2014-11-18 22:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 21:32 , Processed in 0.450036 second(s), 71 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表