好象只能在Panel1.parent的MouseMove事件中判断了

解决方案 »

  1.   

    那你重再CM_ONMOUSEDOWN和CM_ONMOUSELEAVE吧,我写了加上这两个事件的控件;unit NewPanel;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls;type
      TEnterLeave = procedure (Sender:TObject) of object;
      TNewPanel = class(TPanel)
      private
        { Private declarations }
        FOnEnter : TEnterLeave;
        FOnLeave : TEnterLeave;
        procedure WMENTER (var Msg : TMessage); message CM_MOUSEENTER;
        procedure WMLEAVe (var Msg : TMessage); message CM_MOUSELEAVE;
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
        { Published declarations }
        property OnMouseEnter : TEnterLeave read FOnEnter write FOnEnter;
        property OnMouseLeave : TEnterLeave read FOnLeave write FOnLeave;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TNewPanel]);
    end;{ TNewPanel }procedure TNewPanel.WMENTER(var Msg: TMessage);
    begin
      inherited;
      if Assigned(FOnEnter) then FOnEnter(self);
    end;procedure TNewPanel.WMLEAVe(var Msg: TMessage);
    begin
      inherited;
      if Assigned(FOnLeave) then FOnLeave(self);
    end;end.
      

  2.   

    我在哪里调用你的CM_ONMOUSEDOWN和CM_ONMOUSELEAVE程序呢,type
      TEnterLeave = procedure (Sender:TObject) of object;
      TNewPanel = class(TPanel)
      好象编译通不过,谢谢,
      

  3.   

    在form的onmousemove里写。
    panel1.color:=原来的颜色