如题!

解决方案 »

  1.   

    沒有現成的事件。你可以用FORM的OnMouseMove事件﹐判斷鼠标的位置是否在Button上。
      

  2.   

    好像没有专门的事件,须在button的容器中的mousemove中判断
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type  TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TMyButton = class(TButton)
      private
        FOnMouseLeave: TNotifyEvent;
        FOnMouseEnter: TNotifyEvent;
        procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
        procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
        property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
      public
        procedure MyLeave(Sender: TObject);
        procedure MyEnter(Sender: TObject);
      end;var
      Form1: TForm1;implementation{$R *.DFM}{ TMyButton }procedure TMyButton.CMMouseEnter(var Message: TMessage);
    begin
      if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
    end;procedure TMyButton.CMMouseLeave(var Message: TMessage);
    begin
      if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
    end;procedure TMyButton.MyEnter(Sender: TObject);
    begin
      Self.Caption := 'Enter';
    end;procedure TMyButton.MyLeave(Sender: TObject);
    begin
      Self.Caption := 'Leave'
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MyButton: TMyButton;
    begin
      MyButton := TMyButton.Create(Self);
      MyButton.Parent := Self;
      MyButton.OnMouseLeave := MyButton.MyLeave;
      MyButton.OnMouseEnter := MyButton.MyEnter;
    end;end.