为image添加MouseEnter,MouseLeave,DownPicute多种状态图片
2013-05-15 22:32
169 查看
unit Image1;
interface
uses
System.SysUtils, System.Classes, Vcl.Controls, Vcl.ExtCtrls, dialogs,
Messages, Graphics;
type
TImage1 = class(TImage)
private
{ Private declarations }
FDownPicute: TPicture;
FMouseEnter: TPicture;
FMouseLeave: TPicture;
procedure SetDownPicute(const Value: TPicture);
procedure SetMouseEnter(const Value: TPicture);
procedure SetMouseLeave(const Value: TPicture);
protected
{ Protected declarations }
public
{ Public }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure WMLBuMttonDown(var message: TWMLButtonDown);message WM_LBUTTONDOWN;
procedure CMMOUSEENTER(var message: TWMLButtonDown); message CM_MOUSEENTER;
procedure CMMOUSELEAVE(var message: TWMLButtonDown); message CM_MOUSELEAVE;
published
property DownPicute: TPicture read FDownPicute write SetDownPicute;
property MouseEnter: TPicture read FMouseEnter write SetMouseEnter;
property MouseLeave: TPicture read FMouseLeave write SetMouseLeave;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TImage1]);
end;
{ TImage1 }
procedure TImage1.CMMOUSEENTER(var message: TWMLButtonDown);
begin
if csDesigning in ComponentState then
exit;
if FMouseEnter.Graphic = nil then
exit;
Picture.Assign(nil);
Picture.Assign(MouseEnter);
update;
end;
procedure TImage1.CMMOUSELEAVE(var message: TWMLButtonDown);
begin
if csDesigning in ComponentState then
exit;
if FMouseLeave.Graphic = nil then
exit;
Picture.Assign(nil);
Picture.Assign(MouseLeave);
update;
end;
constructor TImage1.Create(AOwner: TComponent);
begin
inherited;
FDownPicute := TPicture.Create;
FMouseEnter := TPicture.Create;
FMouseLeave := TPicture.Create;
end;
destructor TImage1.Destroy;
begin
FDownPicute.Free;
FMouseEnter.Free;
FMouseLeave.Free;
inherited;
end;
procedure TImage1.SetDownPicute(const Value: TPicture);
begin
// FDownPicute := Value;
FDownPicute.Assign(Value);
end;
procedure TImage1.SetMouseEnter(const Value: TPicture);
begin
// FMouseEnter := Value;
FMouseEnter.Assign(Value);
end;
procedure TImage1.SetMouseLeave(const Value: TPicture);
begin
// FMouseLeave := Value;
FMouseLeave.Assign(Value);
end;
procedure TImage1.WMLBuMttonDown(var message: TWMLButtonDown);
begin
if (csDesigning in ComponentState) then
exit;
if not Self.Enabled then
exit;
if FDownPicute.Graphic = nil then
exit;
Picture.Assign(nil);
Picture.Assign(FDownPicute.Graphic);
update;
end;
end.
interface
uses
System.SysUtils, System.Classes, Vcl.Controls, Vcl.ExtCtrls, dialogs,
Messages, Graphics;
type
TImage1 = class(TImage)
private
{ Private declarations }
FDownPicute: TPicture;
FMouseEnter: TPicture;
FMouseLeave: TPicture;
procedure SetDownPicute(const Value: TPicture);
procedure SetMouseEnter(const Value: TPicture);
procedure SetMouseLeave(const Value: TPicture);
protected
{ Protected declarations }
public
{ Public }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure WMLBuMttonDown(var message: TWMLButtonDown);message WM_LBUTTONDOWN;
procedure CMMOUSEENTER(var message: TWMLButtonDown); message CM_MOUSEENTER;
procedure CMMOUSELEAVE(var message: TWMLButtonDown); message CM_MOUSELEAVE;
published
property DownPicute: TPicture read FDownPicute write SetDownPicute;
property MouseEnter: TPicture read FMouseEnter write SetMouseEnter;
property MouseLeave: TPicture read FMouseLeave write SetMouseLeave;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TImage1]);
end;
{ TImage1 }
procedure TImage1.CMMOUSEENTER(var message: TWMLButtonDown);
begin
if csDesigning in ComponentState then
exit;
if FMouseEnter.Graphic = nil then
exit;
Picture.Assign(nil);
Picture.Assign(MouseEnter);
update;
end;
procedure TImage1.CMMOUSELEAVE(var message: TWMLButtonDown);
begin
if csDesigning in ComponentState then
exit;
if FMouseLeave.Graphic = nil then
exit;
Picture.Assign(nil);
Picture.Assign(MouseLeave);
update;
end;
constructor TImage1.Create(AOwner: TComponent);
begin
inherited;
FDownPicute := TPicture.Create;
FMouseEnter := TPicture.Create;
FMouseLeave := TPicture.Create;
end;
destructor TImage1.Destroy;
begin
FDownPicute.Free;
FMouseEnter.Free;
FMouseLeave.Free;
inherited;
end;
procedure TImage1.SetDownPicute(const Value: TPicture);
begin
// FDownPicute := Value;
FDownPicute.Assign(Value);
end;
procedure TImage1.SetMouseEnter(const Value: TPicture);
begin
// FMouseEnter := Value;
FMouseEnter.Assign(Value);
end;
procedure TImage1.SetMouseLeave(const Value: TPicture);
begin
// FMouseLeave := Value;
FMouseLeave.Assign(Value);
end;
procedure TImage1.WMLBuMttonDown(var message: TWMLButtonDown);
begin
if (csDesigning in ComponentState) then
exit;
if not Self.Enabled then
exit;
if FDownPicute.Graphic = nil then
exit;
Picture.Assign(nil);
Picture.Assign(FDownPicute.Graphic);
update;
end;
end.
相关文章推荐
- QT 多种状态的背景图片, 放在同一张图上, border-image 进行分割,拉伸
- imageview添加图片代码——内存和相…
- React Native Image多种加载图片方式
- Android中同一个ImageView中根据状态显示不同图片
- CButton控件:mfc自绘按钮类,1张图片显示多种状态的方法
- 正确的添加图片方法 - 解决UIImageView.image = UIImage(named: String)不显示图像的问题
- CButton控件:mfc自绘按钮类,1张图片显示多种状态的方法
- Android - 小知识点 (View 添加 虚线 , ImageView适应图片宽度和高度)
- Android textView文字添加图片 imageSpan使用
- 微信小程序保存网络图片的方式2:downfile+saveImageToPhotosAlbum
- iOS为imageView添加图片实现动画
- CButton控件:mfc自绘按钮类,1张图片显示多种状态的方法
- [置顶] 给ImageView添加tag,避免view复用导致图片的重复
- iOS image 添加图片
- Qt模块化笔记之Qt_Quick——用QQuickImageProvider给Image组件添加图片
- iOS开发---使用Xcode8 添加Launch Image(启动图片)
- CButton控件:mfc自绘按钮类,1张图片显示多种状态的方法
- 【微信小程序】图片被压扁怎么办?在image中添加 mode="widthFix"
- iOS为imageView添加图片实现动画
- 在ImageList中添加图片,运行时SetKeyName报IndexOutOfRangeException