Files
include/Controls/Combo.mqh
T
2025-02-07 19:06:08 +03:30

114 lines
5.1 KiB
Plaintext

//+------------------------------------------------------------------+
//| ComboBox_New.mqh |
//| Copyright 2000-2024, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#include "WndContainer.mqh"
#include "Edit.mqh"
#include "BmpButton.mqh"
#include "ListView_New.mqh"
//+------------------------------------------------------------------+
//| Resources |
//+------------------------------------------------------------------+
//--- Can not place the same file into resource twice
#resource "res\\DropOn.bmp" // image file
#resource "res\\DropOff.bmp" // image file
//+------------------------------------------------------------------+
//| Class CComboBox |
//| Usage: drop-down list |
//+------------------------------------------------------------------+
class CCombo : public CWndContainer
{
private:
//--- dependent controls
CEdit m_edit; // the entry field object
CBmpButton m_drop; // the button object
CListView m_list; // the drop-down list object
int m_area_zorder;
int m_button_zorder;
int m_zorder;
bool m_combobox_state;
bool m_mouse_state;
int m_item_height; // height of visible row
int m_view_items; // number of visible rows in the drop-down list
bool flage; // hidhe or show combobox
public:
CCombo(void);
~CCombo(void);
//--- create
virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
//--- chart event handler
virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
//--- fill
bool AddItem(const string item,const long value=0);
//--- set up
void ListViewItems(const int value) { m_view_items=value; }
//--- data
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()); }
virtual void SetBacgroundItem(color BcGI, color BcGITS) {m_list.SetBackGroundItem(BcGI,BcGITS);}
CListView *GetListViewPointer(void) { return(::GetPointer(m_list)); }
bool ComboBoxState(void) const { return(m_combobox_state); }
void ComboBoxState(const bool state);
void ChangeComboBoxListState(void);
//--- data
string Select(void) { return(m_edit.Text()); }
bool Select(const int index);
bool SelectByText(const string text);
bool SelectByValue(const long value);
//--- data (read only)
long Value(void) { return(m_list.Value()); }
//--- state
virtual bool Show(void);
virtual bool Hide(void);
virtual void Reset(void);
virtual void Delete(void);
//--- (1) , (2)
virtual void SetZorders(void);
virtual void ResetZorders(void);
//--- methods for working with files
virtual bool Save(const int file_handle);
virtual bool Load(const int file_handle);
protected:
//--- create dependent controls
virtual bool CreateEdit(void);
virtual bool CreateButton(void);
virtual bool CreateList(void);
//--- handlers of the dependent controls events
virtual bool OnClickEdit(void);
virtual bool OnClickButton(void);
virtual bool OnChangeList(void);
//--- show drop-down list
bool ListShow(void);
bool ListHide(void);
void CheckListHide(const int id,int x,int y);
private:
bool OnClickButton(const string clicked_object);
void CheckPressedOverButton(void);
};
CCombo::CCombo(void) : m_combobox_state(true)
{
m_zorder =0;
m_area_zorder =1;
m_button_zorder =2;
}
CCombo::~CCombo(void)
{
}
bool CCombo::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
return true;
}