关于CM_MOUSEENTER(100分)

  • 主题发起人 主题发起人 jsq
  • 开始时间 开始时间
J

jsq

Unregistered / Unconfirmed
GUEST, unregistred user!
用消息CM_MOUSEENTER写程序,判断当鼠标进入时触发事件;<br>当所判断的控件处于form上或处于如image等不是包容器控件<br>上时,该事件可以触发;但是,如果控件处于如panel这样的<br>包容器上时,无法触发事件。
 
想一想。
 
TSpeedButton是这样的,它响应CM_MOUSEENTER,<br>确没有出现如你所说的情况。<br>把SpeedButton的Flat属性设置成True,<br>无论放在Form或Panel上都会触发该事件的。
 
经过实践,speedbutton在panel上无法响应该事件。
 
to jsp:<br>&nbsp; 我想应该可以。<br><br><br>//TSpeedButton的CM_MOUSEENTER是他自己产生的。<br><br>procedure TSpeedButton.UpdateTracking;<br>var<br>&nbsp; P: TPoint;<br>begin<br>&nbsp; if FFlat then<br>&nbsp; begin<br>&nbsp; &nbsp; if Enabled then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; GetCursorPos(P);<br>&nbsp; &nbsp; &nbsp; FMouseInControl := not (FindDragTarget(P, True) = Self);<br>&nbsp; &nbsp; &nbsp; if FMouseInControl then<br>&nbsp; &nbsp; &nbsp; &nbsp; Perform(CM_MOUSELEAVE, 0, 0)<br>&nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; Perform(CM_MOUSEENTER, 0, 0);<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br>
 
Speedbutton我也试过不行的,<br>Panel上的控件要响应CM_MOUSEENTER消息,只不过该消息的值还是Panel,所以<br>无法触发控件,不如在Panel的MouseMove事件中用Controlatpos判断行不行
 
多人接受答案了。
 
后退
顶部