1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| type
TItemBitmap = class(TCollectionItem)
private
fCollection : TCollection;
fBitmap : TBitmap;
fOnBitmapChange : TNotifyEvent;
fOnBitmapProgress : TProgressEvent;
procedure SetBitmap(Value: TBitmap);
protected
function GetDisplayName: string; override;
procedure DoBitmapProgress(Sender: TObject; Stage: TProgressStage; PercentDone: Byte;
RedrawNow: Boolean; const R: TRect; const Msg: string);
procedure DoBitmapChange(Sender: TObject);
published
property Bitmap : TBitmap read fBitmap write SetBitmap stored true;
property OnBitmapChange : TNotifyEvent read fOnBitmapChange write fOnBitmapChange;
property OnBitmapProgres : TProgressEvent read fOnBitmapProgress write fOnBitmapProgress;
public
constructor Create(Collection: TCollection); override;
destructor Destroy; override;
end;
{ TItemBitmap }
constructor TItemBitmap.Create(Collection: TCollection);
begin
inherited;
fCollection := Collection;
fBitmap := TBitmap.Create;
fBitmap.OnChange := DoBitmapChange;
fBitmap.OnProgress := DoBitmapProgress;
end;
destructor TItemBitmap.Destroy;
begin
fBitmap.Free;
inherited;
end;
procedure TItemBitmap.DoBitmapChange(Sender: TObject);
begin
Changed(false);
if assigned(fOnBitmapChange) then
fOnBitmapChange(Self);
end;
procedure TItemBitmap.DoBitmapProgress(Sender: TObject; Stage: TProgressStage; PercentDone: Byte; RedrawNow: Boolean;
const R: TRect; const Msg: string);
begin
Changed(false);
if Assigned(fOnBitmapProgress) then
fOnBitmapProgress(Sender, Stage, PercentDone, RedrawNow, R, Msg);
end;
function TItemBitmap.GetDisplayName: string;
begin
result := 'Bitmap item <'+IntToStr(Index)+'>';
end;
procedure TItemBitmap.SetBitmap(Value: TBitmap);
begin
fBitmap.Assign(Value);
end; |