//+------------------------------------------------------------------+ //| TextLabel.mqh | //| Copyright 2016, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #include "..\Element.mqh" //+------------------------------------------------------------------+ //| Класс для создания текстовой метки | //+------------------------------------------------------------------+ class CTextLabel : public CElement { public: CTextLabel(void); ~CTextLabel(void); //--- Методы для создания текствой метки bool CreateTextLabel(const string text,const int x_gap,const int y_gap); //--- private: void InitializeProperties(const string text,const int x_gap,const int y_gap); bool CreateCanvas(void); //--- public: //--- Рисует элемент virtual void Draw(void); }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CTextLabel::CTextLabel(void) { //--- Сохраним имя класса элемента в базовом классе CElementBase::ClassName(CLASS_NAME); } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CTextLabel::~CTextLabel(void) { } //+------------------------------------------------------------------+ //| Создаёт группу объектов текстового поля ввода | //+------------------------------------------------------------------+ bool CTextLabel::CreateTextLabel(const string text,const int x_gap,const int y_gap) { //--- Выйти, если нет указателя на главный элемент if(!CElement::CheckMainPointer()) return(false); //--- Инициализация свойств InitializeProperties(text,x_gap,y_gap); //--- Создание элемента if(!CreateCanvas()) return(false); //--- return(true); } //+------------------------------------------------------------------+ //| Инициализация свойств | //+------------------------------------------------------------------+ void CTextLabel::InitializeProperties(const string text,const int x_gap,const int y_gap) { m_x =CElement::CalculateX(x_gap); m_y =CElement::CalculateY(y_gap); m_x_size =(m_x_size<1)? 100 : m_x_size; m_y_size =(m_y_size<1)? 20 : m_y_size; m_label_text =text; //--- Цвет фона по умолчанию m_back_color=(m_back_color!=clrNONE)? m_back_color : m_main.BackColor(); //--- Отступы и цвет текстовой метки m_label_color =(m_label_color!=clrNONE)? m_label_color : clrBlack; m_label_x_gap =(m_label_x_gap!=WRONG_VALUE)? m_label_x_gap : 0; m_label_y_gap =(m_label_y_gap!=WRONG_VALUE)? m_label_y_gap : 0; //--- Отступы от крайней точки CElementBase::XGap(x_gap); CElementBase::YGap(y_gap); } //+------------------------------------------------------------------+ //| Создаёт объект для рисования | //+------------------------------------------------------------------+ bool CTextLabel::CreateCanvas(void) { //--- Формирование имени объекта string name=CElementBase::ElementName("text_label"); //--- Создание объекта if(!CElement::CreateCanvas(name,m_x,m_y,m_x_size,m_y_size)) return(false); //--- ShowTooltip(true); return(true); } //+------------------------------------------------------------------+ //| Рисует элемент | //+------------------------------------------------------------------+ void CTextLabel::Draw(void) { //--- Нарисовать фон CElement::DrawBackground(); //--- Нарисовать картинку CElement::DrawImage(); //--- Нарисовать текст CElement::DrawText(); } //+------------------------------------------------------------------+