读书人

image控件,该怎么解决

发布时间: 2013-01-05 15:20:40 作者: rapoo

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;








读书人网 >.NET

热点推荐