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

combobox.mqh

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

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

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

О программе

Данная библиотека представляет собой набор графических элементов управления для платформы MetaTrader, написанный на языке MQL. Библиотека предоставляет классы для создания комбинированных списков, групп с чекбоксами и чекбоксов на графиках торгового терминала.

Основной класс CMyComboBox реализует выпадающий список с поддержкой добавления, вставки, обновления и удаления элементов, а также выбором элемента по индексу, тексту или значению. Класс SNComboBox расширяет функциональность, добавляя режим ввода только чисел и возможность переключения редактирования.

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

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

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

Классы
Класс class SNCheckGroup

Класс группы с чекбоксами, расширяющий стандартный элемент управления для создания на графике

Класс class CMyComboBox

Класс выпадающего списка с поддержкой управления элементами и событиями

Класс class SNComboBox

Класс выпадающего списка с расширенными настройками редактирования и ввода

Класс class SNCheckBox

Класс чекбокса для графического интерфейса

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

Установка ширины и высоты элемента группы

Метод · SNCheckGroup int Width()

Получение ширины элемента группы

Метод · SNCheckGroup int Height()

Получение высоты элемента группы

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

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

Метод · SNCheckGroup void FontSize(int isize)

Настройка размера шрифта для всех элементов группы

Конструктор · CMyComboBox CMyComboBox(void)

Конструктор класса выпадающего списка с заданием начальных размеров

Деструктор · CMyComboBox ~CMyComboBox(void)

Деструктор класса выпадающего списка

Метод · CMyComboBox bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)

Создание выпадающего списка на графике с заданными координатами

Метод · CMyComboBox bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)

Обработка событий графика для элемента управления

Метод · CMyComboBox bool OnChange(const long &lparam,const double &dparam)

Обработка изменения выбранного элемента списка

Метод · CMyComboBox bool AddItem(const string item,const long value)

Добавление элемента в выпадающий список

Метод · CMyComboBox void ListViewItems(const int value)

Установка количества видимых строк в выпадающем списке

Метод · CMyComboBox bool ItemAdd(const string item,const long value)

Добавление элемента во внутренний список с привязкой значения

Метод · CMyComboBox bool ItemInsert(const int index,const string item,const long value)

Вставка элемента в список по указанному индексу

Метод · CMyComboBox bool ItemUpdate(const int index,const string item,const long value)

Обновление текста и значения элемента по индексу

Метод · CMyComboBox bool ItemDelete(const int index)

Удаление элемента из списка по индексу

Метод · CMyComboBox bool ItemsClear(void)

Полная очистка всех элементов списка

Метод · CMyComboBox string Select(void)

Получение текста текущего выбранного элемента

Метод · CMyComboBox bool Select(const int index)

Выбор элемента списка по индексу

Метод · CMyComboBox bool SelectByText(const string text)

Выбор элемента списка по текстовому значению

Метод · CMyComboBox bool SelectByValue(const long value)

Выбор элемента списка по числовому значению

Метод · CMyComboBox long Value(void)

Получение числового значения текущего выбранного элемента

Метод · CMyComboBox bool Show(void)

Отображение элемента управления и скрытие выпадающего списка

Метод · CMyComboBox bool Save(const int file_handle)

Сохранение текущего значения элемента в файл

Метод · CMyComboBox bool Load(const int file_handle)

Загрузка значения элемента из файла

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

Установка ширины и высоты элемента выпадающего списка

Метод · SNComboBox int Width()

Получение ширины элемента выпадающего списка

Метод · SNComboBox int Height()

Получение высоты элемента выпадающего списка

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

Создание выпадающего списка на графике с расширенными возможностями

Метод · SNComboBox void OnDeinit(int chart_id,int reason)

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

Метод · SNComboBox void Edit(bool bStatus)

Переключение режима редактирования поля ввода

Метод · SNComboBox void NumericOnly(bool bNumeric)

Установка режима допустимого ввода только числовых значений

Метод · SNComboBox void FontSize(int isize)

Настройка размера шрифта для всех элементов выпадающего списка

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

Установка ширины и высоты чекбокса

Метод · SNCheckBox int Width()

Получение ширины чекбокса

Метод · SNCheckBox int Height()

Получение высоты чекбокса

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

Создание чекбокса на указанном графике

Метод · SNCheckBox void DrawUpdate()

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

Метод · SNCheckBox bool GetBool()

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

Метод · SNCheckBox void SetBool(bool ddata)

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

Получить полный код

Поиск по коду файла

#ifndef __SOVETNIKOV_COMBOBOX_21312423dfdsf
#define __SOVETNIKOV_COMBOBOX_21312423dfdsf

#include <sovetnikovGUI\defines.mqh>
#include <sovetnikovGUI\Edit.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\CheckGroup.mqh>
#include <Controls\CheckBox.mqh>

class SNCheckGroup: public CCheckGroup
{
protected:
   int               m_width;
   int               m_height;
   int               m_x;
   int               m_y;
public:
   SNCheckGroup():m_width(CONTROLS_BUTTON_WIDTH),m_height(CONTROLS_SPIN_MIN_HEIGHT) {};

   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;
   }

   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;

   }

   void FontSize(int isize)
   {
      for(int i=0; i<ControlsTotal(); i++)
      {
         CWnd *pwnd=Control(i);
         if(pwnd==NULL) continue;

         ObjectSetInteger(m_chart_id,pwnd.Name(),OBJPROP_FONTSIZE,isize);
      }

   }

};

class CMyComboBox: public CWndContainer
{
public:

   CEdit             m_edit;                // the entry field object
   CBmpButton        m_drop;                // the button object
   CListView         m_list;                // the drop-down list object

   int               m_item_height;         // height of visible row
   int               m_view_items;          // number of visible rows in the drop-down list
public:
   CMyComboBox(void);
   ~CMyComboBox(void);

   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);

   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);

   virtual bool      OnChange(const long &lparam,const double &dparam);

   bool              AddItem(const string item,const long value=0);

   void              ListViewItems(const int value)
   {
      m_view_items=value;
   }

   virtual bool      ItemAdd(const string item,const long value=0)
   {
      return(m_list.ItemAdd(item,value));
   }
   virtual bool      ItemInsert(const int index,const string item,const long value=0)
   {
      return(m_list.ItemInsert(index,item,value));
   }
   virtual bool      ItemUpdate(const int index,const string item,const long value=0)
   {
      return(m_list.ItemUpdate(index,item,value));
   }
   virtual bool      ItemDelete(const int index)
   {
      return(m_list.ItemDelete(index));
   }
   virtual bool      ItemsClear(void)
   {
      return(m_list.ItemsClear());
   }

   string            Select(void)
   {
      return(m_edit.Text());
   }
   bool              Select(const int index);
   bool              SelectByText(const string text);
   bool              SelectByValue(const long value);

   long              Value(void)
   {
      return(m_list.Value());
   }

   virtual bool      Show(void);

   virtual bool      Save(const int file_handle);
   virtual bool      Load(const int file_handle);

protected:

   virtual bool      CreateEdit(void);
   virtual bool      CreateButton(void);
   virtual bool      CreateList(void);

   virtual bool      OnClickEdit(void);
   virtual bool      OnClickButton(void);
   virtual bool      OnChangeList(void);

   bool              ListShow(void);
   bool              ListHide(void);
   void              CheckListHide(const int id,int x,int y);
};

bool      CMyComboBox::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{

   SN_ON_EVENT(ON_CLICK,m_edit,OnClickEdit)
   SN_ON_EVENT(ON_CLICK,m_drop,OnClickButton)
   SN_ON_EVENT(ON_CHANGE,m_list,OnChangeList)
   SN_ON_LIST(OnChange);

   CheckListHide(id,(int)lparam,(int)dparam);

   return CWndContainer::OnEvent(id,lparam,dparam,sparam);
}

CMyComboBox::CMyComboBox(void) : m_item_height(CONTROLS_COMBO_ITEM_HEIGHT),
   m_view_items(CONTROLS_COMBO_ITEMS_VIEW)

{
}

CMyComboBox::~CMyComboBox(void)
{
}

bool CMyComboBox::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
{

   m_chart_id=chart;
   m_name=name;
   m_subwin=subwin;

   if(y2-y1<CONTROLS_COMBO_MIN_HEIGHT)
      return(false);

   if(!CWndContainer::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);

   m_id=GetTickCount();

   if(!CreateEdit())
      return(false);
   if(!CreateButton())
      return(false);
   if(!CreateList())
      return(false);

   long iid=m_id;
   m_edit.Id(++iid);
   m_drop.Id(++iid);
   m_list.Id(++iid);

   return(true);
}

bool CMyComboBox::CreateEdit(void)
{

   if(!m_edit.Create(m_chart_id,m_name+"Edit",m_subwin,0,0,Width(),Height()))
      return(false);

   if(!m_edit.Text(""))
      return(false);
   if(!m_edit.ReadOnly(true))
      return(false);

   if(!Add(m_edit))
      return(false);

   return(true);
}

bool CMyComboBox::CreateButton(void)
{

   int x1=Width()-(CONTROLS_BUTTON_SIZE+CONTROLS_COMBO_BUTTON_X_OFF);
   int y1=(Height()-CONTROLS_BUTTON_SIZE)/2;
   int x2=x1+CONTROLS_BUTTON_SIZE;
   int y2=y1+CONTROLS_BUTTON_SIZE;

   if(!m_drop.Create(m_chart_id,m_name+"Drop",m_subwin,x1,y1,x2,y2))
      return(false);

   if(!m_drop.BmpNames("::res\\DropOff.bmp","::res\\DropOn.bmp"))
      return(false);
   if(!Add(m_drop))
      return(false);
   

Показано первые 50% кода (символов: 8267)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
826,70₽ ≈ $10.11