image控件
实现如下功能
image控件
主窗体显示时
当 enable属性为true 时显示图片A
当 enable属性为false 时显示图片B
做成控件形式怎么写
[解决办法]
unit SBImage;
interface
uses
Windows,SysUtils,Controls,Classes,Graphics,ExtCtrls,Messages;
Type
TSBImage=class(TImage)
private
FDisablePicture: TPicture;
FEnablePicture: TPicture;
procedure SetDisablePicture(const Value: TPicture);
procedure SetEnablePicture(const Value: TPicture);
protected
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
public
Constructor Create(AOwner:TComponent);override;
Destructor Destroy;override;
published
property EnablePicture:TPicture read FEnablePicture write SetEnablePicture;
property DisablePicture:TPicture read FDisablePicture write SetDisablePicture;
end;
implementation
{ TSBImage }
procedure TSBImage.CMEnabledChanged(var Message: TMessage);
begin
if not Enabled then Picture:=Self.FDisablePicture
else Picture:=Self.FEnablePicture;
end;
constructor TSBImage.Create(AOwner: TComponent);
begin
inherited;
FDisablePicture:=TPicture.Create;
FEnablePicture:=TPicture.Create;
end;
destructor TSBImage.Destroy;
begin
FreeAndNil(FDisablePicture);
FreeAndNil(FEnablePicture);
inherited;
end;
procedure TSBImage.SetDisablePicture(const Value: TPicture);
begin
FDisablePicture.Assign(Value);
Invalidate;
end;
procedure TSBImage.SetEnablePicture(const Value: TPicture);
begin
FEnablePicture.Assign(Value);
Invalidate;
end;
end.
procedure TForm3.FormCreate(Sender: TObject);
begin
FSBImage:=TSBImage.Create(Self);
FSBImage.EnablePicture.LoadFromFile('E:\Enable.png');
FSBImage.DisablePicture.LoadFromFile('E:\Disable.png');
FSBImage.Parent:=Self;
FSBImage.Align:=alClient;
end;
procedure TForm3.Timer1Timer(Sender: TObject);
begin
FSBImage.Enabled:=Not FSBImage.Enabled;
end;