精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>控件开发和使用>>一个SpeedButton支持鼠标移入移出动态改变图片控件

主题:一个SpeedButton支持鼠标移入移出动态改变图片控件
发信人: 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="我是谁?">  

[关闭][返回]