//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "WaitBoxUnit.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
__fastcall WImagePn::WImagePn(TComponent* Owner): TPanel(Owner)
{
this->Parent = dynamic_cast(Owner);
this->Width = 40;
this->Height = 40;
this->BorderWidth = 0;
this->BorderStyle = bsNone;
this->BevelOuter = bvNone;
this->BringToFront();
Images = new TPngImage;
ShadowImages = new Graphics::TBitmap();
ShadowTemplate = new Graphics::TBitmap();
MImageCounter = 0;
MType = tSnake;
SetImageType(MType);
Timer = new TTimer(Owner);
Timer->Enabled = true;
Timer->Interval = 1000;
Timer->OnTimer = OnTimer;
}
//---------------------------------------------------------------------------
__fastcall WImagePn::~WImagePn()
{
delete ShadowImages;
delete ShadowTemplate;
delete Timer;
delete Images;
}
//---------------------------------------------------------------------------
void __fastcall WImagePn::Paint()
{
TPanel::Paint();
try {
BitBlt(ShadowTemplate->Canvas->Handle, 0,0,40,40, ShadowImages->Canvas->Handle, (MImageCounter * 40), 0, SRCCOPY);
TPanel::Canvas->Draw(0, 0, ShadowTemplate);
} __finally {
}
}
//---------------------------------------------------------------------------
void __fastcall WImagePn::OnTimer (TObject *Sender)
{
MImageCounter ++;
if (MImageCounter > 7)
MImageCounter = 0;
this->Invalidate();
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall WImagePn::SetImageType(MImageType Value)
{ String UImageName;
MType = Value;
if (MType == tSnake) UImageName = "WAIT_IMAGE_01";
else if (MType == tFadingBalls) UImageName = "WAIT_IMAGE_02";
else if (MType == tRainbow) UImageName = "WAIT_IMAGE_03";
else UImageName = "WAIT_IMAGE_04";
TResourceStream *RcStream = new TResourceStream(unsigned(HInstance), UImageName, L"RT_RCDATA");
try {
Images->LoadFromStream(RcStream);
ShadowImages->Assign(Images);
ShadowTemplate->Assign(Images);
ShadowTemplate->SetSize(40, 40);
} __finally {
delete RcStream;
}
this->Invalidate();
}
//---------------------------------------------------------------------------
int __fastcall WImagePn::GetInterval()
{
return Timer->Interval;
}
//---------------------------------------------------------------------------
void __fastcall WImagePn::SetInterval(int Value)
{
Timer->Interval = Value > 0 ? Value: 1000;
}
//---------------------------------------------------------------------------