//+------------------------------------------------------------------+ //| ScrollView | //| Copyright 2006-2011, www.FXmaster.de | //| www.FXmaster.de | //+------------------------------------------------------------------+ #property copyright "Copyright 2006-2011, www.FXmaster.de" #property link "www.FXmaster.de" #property version "1.00" #include "View.mqh" #define SV_VDIR 0 #define SV_HDIR 1 //------------------------------------------------------------------ class CScrollView class CScrollView: public CView { //--- базовые функции public: CScrollView() { m_value=0; m_min=0; m_max=100; m_step=1; } ~CScrollView() { DeleteView(); } virtual void Create(long chart, string name, int wnd, color clr, color bgclr, color selclr, int x, int y, int dx, int dy, int corn=0, int fontsize=8); //--- функции обработки состояния public: int m_dir; // тип отрисовки double m_min, m_max; // максимум/минимум прогресса double m_value; // текущее значение double m_step; // шаг прогресса virtual int OnClick(string name); // имя объекта на который кликнули //--- функции отображения public: virtual void Draw(); // обновить вид virtual void DeleteView(); // удалить все элементы отображения }; //------------------------------------------------------------------ Create void CScrollView::Create(long chart, string name, int wnd, color clr, color bgclr, color selclr, int x, int y, int dx, int dy, int corn=0, int fontsize=8) { CView::Create(chart, name, wnd, clr, bgclr, selclr, x, y, dx, dy, corn, fontsize, "Wingdings"); if (dx>dy) m_dir=SV_HDIR; else m_dir=SV_VDIR; m_min=0; m_max=100; m_value=0; m_step=1; } //------------------------------------------------------------------ OnClick int CScrollView::OnClick(string name) { double s=0; if (name==m_name+".up") s=-1; if (name==m_name+".dn") s=1; if (s==0) return(0); double v=m_value+s*m_step; if (v>m_max || v