如题!

解决方案 »

  1.   

    procedure MouseLeave(AControl: TControl); dynamic;
      

  2.   

    在窗体添加以下过程:
      procedure MouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
      

  3.   

    谢了,再问一下,在我的窗体上有其他的控件,当我把鼠标移到这些控件上时也触发了,MouseLeave,能不能在这个时候不触发,有什么好的方法?
      

  4.   

    控件触发是自发行为,是控件属性的一部分。要做到让控件不响应动作也可以,对控件的OnMouseLeave过程写空代码.
      

  5.   

    procedure MouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
      

  6.   

    控件的OnMouseLeave是不是也要自己写,怎么写?
    我现在是一个窗体,窗体上放了一个TreeView,TreeView是Client的,我想在鼠标离开窗体的时候自动关闭窗体。如果我现在直接在窗口的MouseLeave中直接写Close,那么我的鼠标在从窗体的边缘移到窗体是的TreeView上时也会触发MouseLeave过程,实际上这个时候我不需要触发!也就是说我怎样才能做到鼠标在完全离开窗体后,才触发MouseLeave。
      

  7.   

    谢了,再问一下,在我的窗体上有其他的控件,当我把鼠标移到这些控件上时也触发了,MouseLeave,能不能在这个时候不触发,有什么好的方法?========================================================
    不能,要用CM_MOUSEENTER 控件的OnMouseLeave是不是也要自己写,怎么写?====================================================
    在Form中声明两个函数:procedure CMMouseEnter(var msg:tmessage);message CM_MOUSEENTER;procedure CMMouseLeave(var msg:tmessage);message CM_MOUSELEAVE;实现部分如下:procedure TForm1.cmmouseenter(var msg:tmessage);beginif msg.LParam=integer(button1) thenshowmessage('fsdkfs');end;
      

  8.   

    jackie168(花好月圓) 佩服,msdn上都没有关于CM_MOUSEENTER消息的介绍,你都能
    知道msg.LParam这么用,佩服佩服,学习学习!!
      

  9.   

    在procedure TForm1.cmmouseenter(var msg:tmessage);
    中如果鼠标就在窗体上应该怎么判断?
      

  10.   

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
       showmessage('鼠标就在窗体上');
    end;
      

  11.   

    在MouseMove上是可以判断鼠标在窗体上,但不能解决我现在的问题,能不能在mouseenter中判断我的鼠标在窗体上呢!