小新师傅,你就忍心看你带的徒弟这么笨吗:( 什么意思?如果你现在按钮中实现当鼠标移出或移入时可以继承TButton控件在其中响应CM_MOUSEENTER and CM_MOUSELEFT两个delphi消息 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回复:zfmich用那个是可以实现,但同如果我放了很多的按钮呢,每一个都要判断吗?wisenowa(h) :能不能具体一点? 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; sorry 是CM_MOUSELEAVE 不是CM_MOUSELEFT 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; 我做了一个例子你看看吧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. very Easydelphi有两个消息,cm_mouseenter,cm_mouseleft两个消息public procedure mouseenter(var msg:Tmessage);message cm_mouseenter; procedure mouseleft(var msg:Tmessage);message cm_mouseleft;implementationprocedure Tform1.mouseenter(var msg:Tmessage);begin screen.Cursor:=crSizeNS;end;procedure Tform1.mouseleft(var msg:Tmessage);begin screen.Cursor:=crArrow;end;搞定 其实只要结合 button的mousemove 和 form的 mousemove事件使用就行了 这样我己经做到了,但是如果我放了别的比如panel,memo等,那又得每个控件都写了:( geliang(回来的光芒) :你的实现不了:((( 不会吧,肯定可以procedure mouseenter(var msg:Tmessage);message cm_mouseenter;procedure mouseleft(var msg:Tmessage);message cm_mouseleft;我这两个过程是在Tform1的public下定义的,肯定行的 我的方法和wisenowa(h)可以是可以,但不好,都要自己create,再指定位置,不方便.还是用taxi(游少爷)的方法,自己再封装一个Button geliang(回来的光芒) :我知道你的意思,可是我要求在button实现,而且我在运行时没有移入和移入时正常,但是在移出后就不响应了。 徒儿何事,你要实现的是什么功能啊?taxi(游少爷)的方法是不错的选择啊! delphi datetimepicker 设置时间成2010-10-10 请教:如何在客户端执行asta服务器端的update SQL语句? 关于读取内存时遇到的问题! 远程SQL数据导入本地Access数据库 WINDOWS的‘COMBOBOX’控件是不是由三个窗口组成的:1,编辑框,2,按钮,3,下拉窗口?3Q 指针结构问题???? 想请教一个问题,谢谢 如何吧一个表里的类容复制到另一个表中?一经解决马上给分 请教高手!!关于盗取QQ密码的问题? DELPHI6带的那个ACTIVEFORM的例子empeditx出错?!!!高分求救 如何实现窗体的部分刷新? delphi和存储过程
Y: Integer);
begin
edit3.text:='a';
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
edit3.text:='b';
end;
是CM_MOUSELEAVE 不是CM_MOUSELEFT
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;
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.
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;
搞定
procedure mouseenter(var msg:Tmessage);message cm_mouseenter;
procedure mouseleft(var msg:Tmessage);message cm_mouseleft;
我这两个过程是在Tform1的public下定义的,肯定行的
还是用taxi(游少爷)的方法,自己再封装一个Button
taxi(游少爷)的方法是不错的选择啊!