控件如何捕获鼠标?(50分)

  • 主题发起人 主题发起人 Sachow
  • 开始时间 开始时间
S

Sachow

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望做一个像SpeedButton的Flat效果那样的东西,要鼠标移动到该控件上<br>时控件的边框或形状发生改变,鼠标离开后又恢复原状的,<br>我用了SetCapture, GetCapture和ReleaseCapture,但效果总是不尽如人意<br>请问该怎么做?现在的主要问题是鼠标离开控件后控件不会恢复原状。
 
干脆自己处理CM_MOUSEENTER, CM_MOUSELEAVE 消息吧。
 
如何处理?是在哪个事件中,能给一个例子吗?
 
需要自己定义事件.<br>Txxxxx = class(Txxxx)<br>private<br>&nbsp; FOnMouseEnter: TNotifyEvent;<br>&nbsp; FOnMouseLeave: TNotifyEvent;<br>&nbsp; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;<br>&nbsp; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;<br>published<br>&nbsp; property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;<br>&nbsp; property OnMouseLeave: TNotifyEent read FOnMouseLeave write FOnMouseLeave;<br>end<br><br>procedure Txxxxx.CMMouseEnter(var Message: TMessage);<br>begin<br>&nbsp; inherited;<br>&nbsp; if Assigned(FOnMouseEnter) then<br>&nbsp; &nbsp; FOnMouseEnter(Self);<br>end;<br><br>procedure Txxxxx.CMMouseLeave(var Message: TMessage);<br>begin<br>&nbsp; inherited;<br>&nbsp; if Assigned(FOnMouseLeave) then<br>&nbsp; &nbsp; FOnMouseLeave(Self);<br>end;
 
wuwu, 我想人家会的,早知道我也写多点。
 
接受答案了.
 
后退
顶部