//--------------------------------------------------------------------------- #include #pragma hdrstop #include "StatusProgress.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TStatusProgress *StatusProgress; //--------------------------------------------------------------------------- __fastcall TStatusProgress::TStatusProgress(TStatusBar *sb, int n) : TObject() { StatusBar = sb; FNumber = n; Resize(); Rect.Top = 4; Rect.Bottom = 17; StatusBar->Canvas->Brush->Color = clNavy; } //--------------------------------------------------------------------------- __fastcall TStatusProgress::~TStatusProgress() { /* StatusBar->Canvas->Brush->Color = clBtnFace; Rect.Left = Start; Rect.Right = Start+Length-6; StatusBar->Canvas->FillRect(Rect); */ } //--------------------------------------------------------------------------- // Private Function //--------------------------------------------------------------------------- void __fastcall TStatusProgress::SetMaximum(double max) { FMaximum = max; p = 0; } //--------------------------------------------------------------------------- void __fastcall TStatusProgress::SetPosition(double pos) { int i, len = FMaximum>0 ? pos*(Length-6)/FMaximum : 0; for (i=p; iCanvas->FillRect(Rect); p = i; } } //--------------------------------------------------------------------------- // Public Function //--------------------------------------------------------------------------- void __fastcall TStatusProgress::Resize() { Start = 0; for (int i=0; iPanels->Items[i]->Width; } Start += 4; Length = StatusBar->Panels->Items[FNumber]->Width; } //--------------------------------------------------------------------------- void __fastcall TStatusProgress::End() { SetPosition(FMaximum); InitPosition(); } //--------------------------------------------------------------------------- void __fastcall TStatusProgress::InitPosition() { StatusBar->Canvas->Brush->Color = clBtnFace; Rect.Left = Start; StatusBar->Canvas->FillRect(Rect); StatusBar->Canvas->Brush->Color = clNavy; } //---------------------------------------------------------------------------