发信人: 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="我是谁?"> |
|