//+------------------------------------------------------------------+ //| Class CProgressBar | //| Purpose: Creates a customizable progress bar using the | //| CChartObjectRectLabel as the underlying object. | //+------------------------------------------------------------------+ #include class CProgressBar : public CPanel { private: CChartObjectRectLabel m_ProgressForm; CChartObjectRectLabel m_ProgressBars; public: CProgressBar(); ~CProgressBar(); bool CreateProgressBars(const long id, const string name, const int subwin, const int x, const int y, const int width, const int height,const color Bcg); bool CreateArea(const long id, const string name, const int subwin, const int x, const int y, const int width, const int height,const color Fg); void SetSize(int x) {m_ProgressBars.X_Size(x);} protected: virtual bool OnResize(); virtual bool OnMove(); }; CProgressBar::CProgressBar() { } CProgressBar::~CProgressBar() { } bool CProgressBar::CreateProgressBars(const long id, const string name, const int subwin, const int x, const int y, const int width, const int height,const color Bcg) { if (!CPanel::Create(id, name, subwin, x+2, y+2, width-4, height-4)) return false; if (!m_ProgressBars.Create(id,name,subwin,x+2, y+2, width-4, height-4)) return false; if(!m_ProgressBars.Color(clrNONE)) return false; if(!m_ProgressBars.BackColor(Bcg)) return false; if(!m_ProgressBars.BorderType(BORDER_FLAT)) return false; return true; } bool CProgressBar::CreateArea(const long id, const string name, const int subwin, const int x, const int y, const int width, const int height,const color Fg) { if (!CPanel::Create(id, name, subwin, x, y, width, height)) return false; if (!m_ProgressForm.Create(id,name,subwin,x,y,width,height)) return false; if(!m_ProgressForm.Color(Fg)) return false; if(!m_ProgressForm.BackColor(clrNONE)) return false; if(!m_ProgressForm.BorderType(BORDER_FLAT)) return false; if(!m_ProgressForm.Style(STYLE_SOLID)) return false; return true; } //+------------------------------------------------------------------+ //| Absolute movement of the chart object | //+------------------------------------------------------------------+ bool CProgressBar::OnMove() { m_ProgressBars.X_Distance(m_rect.left); m_ProgressBars.Y_Distance(m_rect.top); return(m_ProgressForm.X_Distance(m_rect.left) && m_ProgressForm.Y_Distance(m_rect.top)); } //+------------------------------------------------------------------+ //| Resize the chart object | //+------------------------------------------------------------------+ bool CProgressBar::OnResize() { m_ProgressBars.X_Size(m_rect.Width()); m_ProgressBars.Y_Size(m_rect.Height()); return(m_ProgressForm.X_Size(m_rect.Width()) && m_ProgressForm.Y_Size(m_rect.Height())); }