class SNPanel
Класс панели для управления элементами интерфейса на чарте
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «panels.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека панельных графических элементов на языке MQL для платформы MetaTrader. Содержит три класса — SNPanel, SNStatusBar и SNCell — для построения пользовательских интерфейсов на чартах торговых советников и индикаторов.
SNPanel и SNStatusBar — контейнеры, хранящие массив элементов типа CWndObj и управляющие их показом и скрытием. SNCell — ячейка, поддерживающая режим метки или чекбокса с настройкой текста, цветов и состояния.
Все классы позволяют задавать размеры, создавать графические объекты на чарте и управлять визуальными свойствами для отображения интерактивных элементов в пользовательском интерфейсе.
Классов: 3 · методов: 25 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 0
class SNPanel
Класс панели для управления элементами интерфейса на чарте
class SNStatusBar
Класс строки состояния на основе панели
class SNCell
Класс ячейки, представляющей метку или чекбокс
void SetSize(int w,int h)
Задание ширины и высоты панели
int Width()
Получение текущей ширины панели
int Height()
Получение текущей высоты панели
void Add(int ipos,CWndObj &pwnd)
Добавление элемента в массив панели
bool Create(long chart,string name,int subwin,int x1,int y1)
Создание графического объекта панели на чарте
bool OnShow(void)
Отображение панели и всех входящих в неё элементов
bool OnHide(void)
Скрытие панели и всех входящих в неё элементов
void SetSize(int w,int h)
Задание ширины и высоты строки состояния
int Width()
Получение текущей ширины строки состояния
int Height()
Получение текущей высоты строки состояния
void Add(int ipos,CWndObj &pwnd)
Добавление элемента в массив строки состояния
bool Create(long chart,string name,int subwin,int x1,int y1)
Создание графического объекта строки состояния на чарте
void Type(ENUM_CELL_TYPE etype)
Задание типа ячейки (метка или чекбокс)
void SetSize(int w,int h)
Задание ширины и высоты ячейки
int Width()
Получение текущей ширины ячейки
int Height()
Получение текущей высоты ячейки
bool Create(long chart,string name,int subwin,int x1,int y1)
Создание графического объекта ячейки на чарте
bool IsCheckBox()
Проверка текущего состояния чекбокса
void SetCheckBox(const bool bCheck)
Установка состояния чекбокса
void DrawUpdate()
Обновление отрисовки ячейки
bool Text(const string value)
Установка текста в ячейке
bool ZOrder(const long value)
Установка порядка расположения (Z-order) ячейки
bool Color(const color value)
Установка цвета текста ячейки
bool ColorBackground(const color value)
Установка цвета фона ячейки
bool ColorBorder(const color value)
Установка цвета границы ячейки
#ifndef __SOVETNIKOV_PANEL_21312423dfdsf
#define __SOVETNIKOV_PANEL_21312423dfdsf
#include <sovetnikovGUI\defines.mqh>
#include <sovetnikovGUI\Edit.mqh>
#include <sovetnikovGUI\ComboBox.mqh>
#include <Controls\Panel.mqh>
/*
нужно создать
на базе CWndObj
элементы внутри панели
ширину они будут брать от панели.
размеры задаем,
у них будет составной элемент
из картинки и текста
так же может быть кнопка\картинка
нужна будет функция
установить номер , размер по х
добавить в обработчик сообщений?
составной элемент будет из
картинка+метка
картинка на базе кнопки
метка на базе кнопки, центровка по середине у кнопки и у метки.
кнопка может быть как нажимаемой так и не нажимаемой.
**/
class SNPanel: public CPanel
{
protected:
int m_width;
int m_height;
int m_x;
int m_y;
public:
SNPanel():m_width(CONTROLS_BUTTON_WIDTH),m_height(CONTROLS_SPIN_MIN_HEIGHT)
{
ArrayResize(m_pwnd,0);
};
CWndObj *m_pwnd[];
void SetSize(int w=0,int h=0){if(w!=0) m_width=w; else m_width=CONTROLS_BUTTON_WIDTH; if(h!=0) m_height=h; else m_height=CONTROLS_SPIN_MIN_HEIGHT;}
int Width(){return m_width;}
int Height(){return m_height;}
void Add(int ipos,CWndObj &pwnd)
{
int isize=ArraySize(m_pwnd);
if(ArrayResize(m_pwnd,isize+1)!=-1)
{
m_pwnd[isize]=&pwnd;
}
}
bool Create(long chart,string name,int subwin,int x1,int y1)
{
bool bCreate=true;
if(ObjectFind(chart,name)<0)
{
bCreate=Create(chart,name,subwin,x1,y1,x1+m_width,y1+m_height);
}
Size(m_width,m_height);
Move(x1,y1);
return bCreate;
}
virtual bool OnShow(void)
{
for(int i=0;i<ArraySize(m_pwnd);i++)
{
m_pwnd[i].Show();
}
return(CPanel::OnShow());
}
virtual bool OnHide(void)
{
for(int i=0;i<ArraySize(m_pwnd);i++)
{
m_pwnd[i].Hide();
}
return(CPanel::OnHide());
}
};
class SNStatusBar: public CPanel
{
protected:
int m_width;
int m_height;
int m_x;
int m_y;
color m_clDefault,m_clSelect;
public:
SNStatusBar():m_width(CONTROLS_BUTTON_WIDTH),m_height(CONTROLS_SPIN_MIN_HEIGHT),m_clDefault(CONTROLS_BUTTON_COLOR_BG),m_clSelect(CONTROLS_BUTTON_COLOR_BORDER)
{
ArrayResize(m_pwnd,0);
};
bool bPress;
CWndObj *m_pwnd[];
void SetSize(int w=0,int h=0){if(w!=0) m_width=w; else m_width=CONTROLS_BUTTON_WIDTH; if(h!=0) m_height=h; else m_height=CONTROLS_SPIN_MIN_HEIGHT;}
int Width(){return m_width;}
int Height(){return m_height;}
void Add(int ipos,CWndObj &pwnd)
{
int isize=ArraySize(m_pwnd);
if(ArrayResize(m_pwnd,isize+1)!=-1)
{
m_pwnd[isize]=&pwnd;
}
}
bool Create(long chart,string name,int subwin,int x1,int y1)
{
bool bCreate=true;
if(ObjectFind(chart,name)<0)
{
bCreate=Create(chart,name,subwin,x1,y1,x1+m_width,y1+m_height);
}
Показано первые 50% кода (символов: 4425)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.