请问如何在bitbtn实现当鼠标移上时上面的图片改变,移开时又复原?(30分)

响应Mouse_leave,Mouse_in消息,建议你看看SpeedButton的源码
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
private
procedure MyWndProc(var Message: TMessage);
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
OldMyWndProc: TWndMethod;
implementation
{$R *.dfm}
procedure TForm1.MyWndProc(var Message: TMessage);
begin
case Message.Msg of
CM_MOUSEENTER:
bitbtn1.glyph.LoadFromFile('d:/pic2.bmp');//鼠标移入
CM_MOUSELEAVE:
bitbtn1.glyph.LoadFromFile('d:/pic1.bmp');//鼠标移来
end;
OldMyWndProc(Message);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OldMyWndProc := BitBtn1.WindowProc;
BitBtn1.windowProc := MyWndProc;
bitbtn1.glyph.LoadFromFile('d:/pic1.bmp');
end;
end.
 
同意楼上的,并且使用这种方法可以解决很多类似的问题.
 
为啥偏要用Bitbtn
用Toolbar+ImgList就简单多了
用不着写代码的
 
用小乙的很简单,用两个imglisty添加不同的片就可以。非常简单。
不过michael.fly也不错!!
 
都同意!也可试XP控件,蛮不错的
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
949
SUNSTONE的Delphi笔记
S
S
回复
0
查看
770
SUNSTONE的Delphi笔记
S
顶部