CM_MouseEnter, CM_MouseLeave对任何可视化组件都有用。 但是我只想对某一组件发生作用。 该怎么办啊???(50分)

  • 主题发起人 主题发起人 god263
  • 开始时间 开始时间
G

god263

Unregistered / Unconfirmed
GUEST, unregistred user!
CM_MouseEnter, CM_MouseLeave对任何可视化组件都有用。 但是我只想对某一组件发生作用。 该怎么办啊???[:(][:(]
 
什么意思?不懂<br>你不想处理,就不处理这个事件就可以了<br>只有在你需要的时候,才处理这事件的
 
procedure TGCImage.CMMouseLeave(var msg: TMessage);<br>begin<br>&nbsp; inherited;<br>&nbsp; if Self.ClassName &lt;&gt; '****' &nbsp;then exit; &nbsp;// ****为组件的类名.<br>&nbsp; .....................<br>&nbsp; .....................<br>end;<br>不知道你是不是这个意思.
 
可能是我没有说清楚。 是这样:<br>怎样做才能使 容器组件(如Panel) 上的其他组件是透明的??<br>比如说 CM_MouseEnter, CM_MouseLeave 对 Panel 上的其他组件不起作用。 只对Panel其作用??<br>
 
关注此问题,<br>你所说的,可能有问题,如果说在Panel1上放一个button1,这时,在button1上移动时<br>也显示此时光标相对于panel1上的坐标。这样button1就不会有mousemove事件了。<br>这好象不太可能。<br>能说明白,你到底要实现什么功能吗?不至于这么费事吧.
 
好像是有点费事。 也就是说当鼠标从panel上移动到其他panel上的控间时不发生MouseEnter和MouseLeave
 
可以用坐标解决,例如panel上有一个button,当mouse的x,y坐标在button的范围内时就不<br>作任何操作
 
WINAPI SetCapture
 
单纯的鼠标移动事件的坐标问题,可以这样解决:<br>function kk(i:Tpoint):Tpoint;<br>&nbsp;begin<br>&nbsp; &nbsp;mapwindowpoints(form1.panel2.Handle ,form1.panel1.Handle,i,2);<br>&nbsp; &nbsp;result:=i;<br>&nbsp;end;<br>procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,<br>&nbsp; Y: Integer);<br>&nbsp; var<br>&nbsp; i:Tpoint;<br>begin<br>i.x:=x;<br>i.y:=y;<br>&nbsp; i:=kk(i);<br>//clienttoscreen(i);<br>caption:=inttostr(i.x)+':'+inttostr(i.y);<br>end;<br>这样,当你在 Panel1上的Panel2上移动时,将得到此时鼠标相对于Panel1的坐标.<br>至于让某一个事件不触发,可以这样解决:<br>panel2.mousemove:=panel1.mousemove;<br>这样,panel2的mousemove实际执行的是panel1的mousemove事件.<br>其它事件类似。
 
谢谢各位[:)]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部