← К каталогу
Исходный код · ID 3544

panels.mqh

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Библиотека панельных графических элементов на языке MQL для платформы MetaTrader. Содержит три класса — SNPanel, SNStatusBar и SNCell — для построения пользовательских интерфейсов на чартах торговых советников и индикаторов.

SNPanel и SNStatusBar — контейнеры, хранящие массив элементов типа CWndObj и управляющие их показом и скрытием. SNCell — ячейка, поддерживающая режим метки или чекбокса с настройкой текста, цветов и состояния.

Все классы позволяют задавать размеры, создавать графические объекты на чарте и управлять визуальными свойствами для отображения интерактивных элементов в пользовательском интерфейсе.

Состав библиотеки

Классов: 3 · методов: 25 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 0

Классы
Класс class SNPanel

Класс панели для управления элементами интерфейса на чарте

Класс class SNStatusBar

Класс строки состояния на основе панели

Класс class SNCell

Класс ячейки, представляющей метку или чекбокс

Методы и конструкторы
Метод · SNPanel void SetSize(int w,int h)

Задание ширины и высоты панели

Метод · SNPanel int Width()

Получение текущей ширины панели

Метод · SNPanel int Height()

Получение текущей высоты панели

Метод · SNPanel void Add(int ipos,CWndObj &pwnd)

Добавление элемента в массив панели

Метод · SNPanel bool Create(long chart,string name,int subwin,int x1,int y1)

Создание графического объекта панели на чарте

Метод · SNPanel bool OnShow(void)

Отображение панели и всех входящих в неё элементов

Метод · SNPanel bool OnHide(void)

Скрытие панели и всех входящих в неё элементов

Метод · SNStatusBar void SetSize(int w,int h)

Задание ширины и высоты строки состояния

Метод · SNStatusBar int Width()

Получение текущей ширины строки состояния

Метод · SNStatusBar int Height()

Получение текущей высоты строки состояния

Метод · SNStatusBar void Add(int ipos,CWndObj &pwnd)

Добавление элемента в массив строки состояния

Метод · SNStatusBar bool Create(long chart,string name,int subwin,int x1,int y1)

Создание графического объекта строки состояния на чарте

Метод · SNCell void Type(ENUM_CELL_TYPE etype)

Задание типа ячейки (метка или чекбокс)

Метод · SNCell void SetSize(int w,int h)

Задание ширины и высоты ячейки

Метод · SNCell int Width()

Получение текущей ширины ячейки

Метод · SNCell int Height()

Получение текущей высоты ячейки

Метод · SNCell bool Create(long chart,string name,int subwin,int x1,int y1)

Создание графического объекта ячейки на чарте

Метод · SNCell bool IsCheckBox()

Проверка текущего состояния чекбокса

Метод · SNCell void SetCheckBox(const bool bCheck)

Установка состояния чекбокса

Метод · SNCell void DrawUpdate()

Обновление отрисовки ячейки

Метод · SNCell bool Text(const string value)

Установка текста в ячейке

Метод · SNCell bool ZOrder(const long value)

Установка порядка расположения (Z-order) ячейки

Метод · SNCell bool Color(const color value)

Установка цвета текста ячейки

Метод · SNCell bool ColorBackground(const color value)

Установка цвета фона ячейки

Метод · SNCell 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 и перейдите к оплате.

Стоимость полного кода
442,50₽ ≈ $5.41