什么意思?
如果你现在按钮中实现当鼠标移出或移入时可以继承TButton控件
在其中响应CM_MOUSEENTER and CM_MOUSELEFT两个delphi消息

解决方案 »

  1.   

    回复:zfmich用那个是可以实现,但同如果我放了很多的按钮呢,每一个都要判断吗?wisenowa(h) :能不能具体一点?
      

  2.   

    procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      edit3.text:='a';
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      edit3.text:='b';
    end;
      

  3.   

    sorry
      是CM_MOUSELEAVE 不是CM_MOUSELEFT
      

  4.   

    TButtonEx = class(TButton)
    private
      FMouseEnter: TNotifyEvent;
      FMouseLeave: TNotifyEvent;
    proctected
      procedure CMMouseEnter(var Message: TMessage); message CM_MouseEnter;
      procedure CMMouseLeave(var Message: TMessage); message CM_MouseLeave;
    public
      constructor Create(AOwner: TComponent); override;
    published
      property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter;
      property OnMouseLeave: TNofifyEvent read FMouseLeave write FMouseLeave;
    end;.....
    .....
    .......
    ,.....
    .....procedure TButtonEx.CMMouseEnter(var Message: TMessage);
    begin
      if Assigned(FMouseEnter) then FMouseEnter(self);
    end;procedure TButtonEx.CMMouseLeave(var Message: TMessage);
    begin
      if Assigned(FMouseLeave) then FMouseLeave(self);
    end;
      

  5.   

    我做了一个例子你看看吧
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type
      TBtn=class(TButton)
        private
          MouseIn:Boolean;
        public
          procedure MouseEnter(var Msg:TMessage);message CM_MOUSEENTER;
          procedure MouseLeft(var Msg:TMessage);message CM_MOUSELEAVE;
      end;
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    { TBtn }procedure TBtn.MouseEnter(var Msg: TMessage);
    begin
      MouseIn:=True;
      ShowMessage('enter');
    end;procedure TBtn.MouseLeft(var Msg: TMessage);
    begin
      //  ShowMessage('left');//这里把它屏蔽因为你试试就知道了
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      btn:TBtn;
    begin
      btn:=TBtn.Create(Self);
      btn.Parent:=Panel1;
      btn.Left:=Form1.Width div 2;
      btn.Top:=Form1.Height div 2;
    end;end.
      

  6.   

    very Easy
    delphi有两个消息,cm_mouseenter,cm_mouseleft两个消息
    public
     procedure mouseenter(var msg:Tmessage);message cm_mouseenter;
     procedure mouseleft(var msg:Tmessage);message cm_mouseleft;
    implementation
    procedure Tform1.mouseenter(var msg:Tmessage);
    begin
      screen.Cursor:=crSizeNS;
    end;
    procedure Tform1.mouseleft(var msg:Tmessage);
    begin
      screen.Cursor:=crArrow;
    end;
    搞定
      

  7.   

    其实只要结合 button的mousemove 和 form的 mousemove事件使用就行了
      

  8.   

    这样我己经做到了,但是如果我放了别的比如panel,memo等,那又得每个控件都写了:(
      

  9.   

    geliang(回来的光芒) :你的实现不了:(((
      

  10.   

    不会吧,肯定可以
    procedure mouseenter(var msg:Tmessage);message cm_mouseenter;
    procedure mouseleft(var msg:Tmessage);message cm_mouseleft;
    我这两个过程是在Tform1的public下定义的,肯定行的
      

  11.   

    我的方法和wisenowa(h)可以是可以,但不好,都要自己create,再指定位置,不方便.
    还是用taxi(游少爷)的方法,自己再封装一个Button
      

  12.   

    geliang(回来的光芒) :我知道你的意思,可是我要求在button实现,而且我在运行时没有移入和移入时正常,但是在移出后就不响应了。
      

  13.   

    徒儿何事,你要实现的是什么功能啊?
    taxi(游少爷)的方法是不错的选择啊!