EasyAndFastMod/Controls/TextLabel.mqh
2026-01-15 07:23:17 -05:00

102 líneas
8,4 KiB
MQL5

//+------------------------------------------------------------------+
//| 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();
}
//+------------------------------------------------------------------+