mm_MouseEnter
MM_MouseLeave响应这两个消息!

解决方案 »

  1.   

    TYourComponent=class(xxx)private
        procedure cmmouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        procedure cmmouseLeave(var Message: TMessage); message CM_MOUSELEAVEimplementationprocedure Tyourcomponent.cmmouseEnter(var Message: TMessage);
    begin
      fuck japan..................
    end;procedure Tyourcomponent.cmmouseLeave(var Message: TMessage);
    begin
      fuck japan again..................
    end;
      

  2.   

    TYourComponent=class(xxx)private
        procedure cmmouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        procedure cmmouseLeave(var Message: TMessage); message CM_MOUSELEAVEimplementationprocedure Tyourcomponent.cmmouseEnter(var Message: TMessage);
    begin
      fuck japan..................
    end;procedure Tyourcomponent.cmmouseLeave(var Message: TMessage);
    begin
      fuck japan again..................
    end;
      

  3.   

    多谢各位老大,但是我还有一点困惑,我所用的控件是整个form中的一个,比如我用了3个image,怎么使这些image具有这两个消息???
      

  4.   

    那你最好写成控件了。  TImageInOut = class(TImage)
      private
        FOnMouseIn:TNotifyEvent;
        FOnMouseOut:TNotifyEvent;
        procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
      protected
      public
        { Public declarations }
      published
        property OnMouseIn: TNotifyEvent read FOnMouseIn write FOnMouseIn;
        property OnMouseOut: TNotifyEvent read FOnMouseOut write FOnMouseOut;
      end;
    procedure TImageInOut.CMMouseEnter(var Message: TMessage);
    begin
      inherited;
      if Assigned(FOnMouseIn) then FOnMouseIn(Self);
    end;
    procedure TImageInOut.CMMouseLeave(var Message: TMessage);
    begin
      inherited;
      if Assigned(FOnMouseIn) then FOnMouseOut(Self);
    end;
      

  5.   

    1,没有必要定义一个自己的TNotifyEvent, 只要Publish TControl.OnMouseEnter  和  TControl.OnMouseLeave 即可。2,也可以使用动态Sub-Class技术,看看Delphi的帮助,关注以下几点:
      property WindowProc;  
      procedure WndProc(...);
      在新的WndProc(...)中拦截消息CM_MOUSEENTER CM_MOUSELEAVE并处理
      注意:这两个消息是delphi自定义的并且是级别最低的消息,也即在TApplication 处理完其他消息后才向TControl发送的消息。不清楚的地方可继续探讨。