问题: 求好用的位图按钮 ( 积分: 20 )
分类: 控件 - 使用
来自: caochen, 时间: 2003-06-17 17:10:00, ID: 1959780
可以设置几个图片,按下时一种状态,放开时一种状态,有没有好用的,谢谢
来自: fz97534, 时间: 2003-06-17 17:52:00, ID: 1959983
给你个 自己做
---------------------------------
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
* 加载图象的控件 两张图片 轮流显示
* 20030618 符林
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
unit uImageBtn;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;
type
TImageBtn = class(TImage)
private
{ Private declarations }
FOnMouseEnter: TNotifyEvent;
FOnMouseExit: TNotifyEvent;
FInsideButton:Boolean;
FPicture1,FPicture2:TPicture;
Procedure CMMMouseEnter(var Msg:TMessage);Message CM_MouseEnter;
Procedure CMMMouseLeave(var Msg:TMessage);Message CM_MouseLeave;
Procedure SetPicture1(Picture1:TPicture);
Procedure SetPicture2(Picture2:TPicture);
protected
{ Protected declarations }
public
{ Public declarations }
Constructor Create(AOwner:TComponent);override;
destructor Destroy;Override;
published
Property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
Property OnMouseExit:TNotifyEvent read FOnMouseExit write FOnMouseExit;
Property Picture1:TPicture read FPicture1 write SetPicture1;
Property Picture2:TPicture read FPicture2 write SetPicture2;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('任富', [TImageBtn]);
end;
{ TImageBtn }
{oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
constructor TImageBtn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FInsideButton:=False;
FPicture1:=TPicture.Create;
FPicture2:=TPicture.Create;
Picture:=Picture1;
end;
destructor TImageBtn.Destroy;
begin
FPicture1.Free;
FPicture2.Free;
Picture.Graphic:=nil;
inherited Destroy;
end;
procedure TImageBtn.CMMMouseEnter(var Msg: TMessage);
begin
if FInsideButton then Exit
else FInsideButton:=True;
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
Picture:=Picture2;
end;
procedure TImageBtn.CMMMouseLeave(var Msg: TMessage);
begin
if FInsideButton then FInsideButton:=False
else Exit;
if Assigned(FOnMouseExit) then FOnMouseExit(Self);
Picture:=Picture1;
end;
procedure TImageBtn.SetPicture1(Picture1: TPicture);
begin
FPicture1.Assign(Picture1);
Picture:=Picture1;
end;
procedure TImageBtn.SetPicture2(Picture2: TPicture);
begin
FPicture2.Assign(Picture2);
Picture:=Picture2;
end;
end.
来自: zealothasu, 时间: 2003-06-17 21:31:00, ID: 1960461
用toolbar不行吗?
来自: caochen, 时间: 2003-06-20 17:38:00, ID: 1969118
接受答案了.
得分大富翁: fz97534