发信人: kingron( ) 
整理人: teleme(2001-03-30 21:22:29), 站内信件
 | 
 
 
  看了你的前一个问题,干脆给你写了一个控件!自己看吧。其实SpeedButton支持这个方式,不需要写代码,不过有的时候好像有问题!你对SpeedButton设置Glyph的时候使用宽度为高度的4倍的图片就可以了!
 unit MySpeedButton;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   Buttons;
 
 type
   TMySpeedButton = class(TSpeedButton)
     private
       { Private declarations }
       FEnterImage:TBitmap;
       FLeaveImage:TBitmap;
       procedure cmmouseenter(var msg:tmessage);message CM_MOUSEENTER;
       procedure cmmouseleave(var msg:tmessage);message CM_MOUSELEAVE;
       Function GetEnterBitmap:TBitmap;
       procedure SetEnterBitmap(value:TBitmap);
       Function GetLeaveBitmap:TBitmap;
       procedure SetLeaveBitmap(value:TBitmap);
     protected
       { Protected declarations }
     public
       { Public declarations }
       Constructor Create(AOwner:TComponent);override;
       destructor Destroy;override;
     published
       property EnterImage:TBitmap read GetEnterBitmap write SetEnterBitmap;
       property LeaveImage:TBitmap read GetLeaveBitmap write SetLeaveBitmap;
       { Published declarations }
   end;
 
 procedure Register;
 
 implementation
 
 procedure Register;
 begin
   RegisterComponents('ActiveX', [TMySpeedButton]);
 end;
 
 { TMySpeedButton }
 
 procedure TMySpeedButton.cmmouseenter(var msg: tmessage);
 begin
   Glyph:=FEnterImage;
 end;
 
 procedure TMySpeedButton.cmmouseleave(var msg: tmessage);
 begin
   Glyph:=FLeaveImage;
 end;
 
 constructor TMySpeedButton.Create(AOwner: TComponent);
 begin
   inherited;
   FEnterImage:=TBitmap.Create;
   FLeaveImage:=TBitmap.Create;
 end;
 
 destructor TMySpeedButton.Destroy;
 begin
   FEnterImage.Free;
   FLeaveImage.Free;
   inherited;
 end;
 
 function TMySpeedButton.GetEnterBitmap: TBitmap;
 begin
   Result:=FEnterImage;
 end;
 
 function TMySpeedButton.GetLeaveBitmap: TBitmap;
 begin
   Result:=FLeaveImage;
 end;
 
 procedure TMySpeedButton.SetEnterBitmap(value: TBitmap);
 begin
   FEnterImage.Assign(value);
 end;
 
 procedure TMySpeedButton.SetLeaveBitmap(value: TBitmap);
 begin
   FLeaveImage.Assign(value);
 end;
 
 
 end.
 
  ---- <img src="http://uh1.gz.163.com photo?name=kingron" border=0 alt="我是谁?">   | 
 
 
 |