//+------------------------------------------------------------------+ //| ControlsCheckBox.mq5 | //| Copyright 2000-2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property description "Control Panels and Dialogs. Demonstration class CCheckBox" #include <Controls\Dialog.mqh> #include <Controls\CheckBox.mqh> //+------------------------------------------------------------------+ //| defines | //+------------------------------------------------------------------+ //--- indents and gaps #define INDENT_LEFT (11) // indent from left (with allowance for border width) #define INDENT_TOP (11) // indent from top (with allowance for border width) #define INDENT_RIGHT (11) // indent from right (with allowance for border width) #define INDENT_BOTTOM (11) // indent from bottom (with allowance for border width) #define CONTROLS_GAP_X (5) // gap by X coordinate #define CONTROLS_GAP_Y (5) // gap by Y coordinate //--- for buttons #define BUTTON_WIDTH (100) // size by X coordinate #define BUTTON_HEIGHT (20) // size by Y coordinate //--- for the indication area #define EDIT_HEIGHT (20) // size by Y coordinate //--- for group controls #define GROUP_WIDTH (150) // size by X coordinate #define LIST_HEIGHT (179) // size by Y coordinate #define RADIO_HEIGHT (56) // size by Y coordinate #define CHECK_HEIGHT (93) // size by Y coordinate //+------------------------------------------------------------------+ //| Class CControlsDialog | //| Usage: main dialog of the Controls application | //+------------------------------------------------------------------+ class CControlsDialog : public CAppDialog { private: CCheckBox m_check_box1; // CCheckBox object CCheckBox m_check_box2; // CCheckBox object public: CControlsDialog(void); ~CControlsDialog(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); protected: //--- create dependent controls bool CreateCheckBox1(void); bool CreateCheckBox2(void); //--- handlers of the dependent controls events void OnChangeCheckBox1(void); void OnChangeCheckBox2(void); }; //+------------------------------------------------------------------+ //| Event Handling | //+------------------------------------------------------------------+ EVENT_MAP_BEGIN(CControlsDialog) ON_EVENT(ON_CHANGE,m_check_box1,OnChangeCheckBox1) ON_EVENT(ON_CHANGE,m_check_box2,OnChangeCheckBox2) EVENT_MAP_END(CAppDialog) //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CControlsDialog::CControlsDialog(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CControlsDialog::~CControlsDialog(void) { } //+------------------------------------------------------------------+ //| Create | //+------------------------------------------------------------------+ bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2) { if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2)) return(false); //--- create dependent controls if(!CreateCheckBox1()) return(false); if(!CreateCheckBox2()) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "CheckBox" element | //+------------------------------------------------------------------+ bool CControlsDialog::CreateCheckBox1(void) { //--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+ (BUTTON_HEIGHT+CONTROLS_GAP_Y)+ (EDIT_HEIGHT+CONTROLS_GAP_Y)+ (EDIT_HEIGHT+CONTROLS_GAP_Y)+ (RADIO_HEIGHT+CONTROLS_GAP_Y); int x2=x1+GROUP_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_check_box1.Create(m_chart_id,m_name+"CheckBox1",m_subwin,x1,y1,x2,y2)) return(false); if(!m_check_box1.Text("CheckBox1")) return(false); if(!m_check_box1.Color(clrBlue)) return(false); if(!Add(m_check_box1)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "CheckBox" element | //+------------------------------------------------------------------+ bool CControlsDialog::CreateCheckBox2(void) { //--- coordinates int x1=INDENT_LEFT+GROUP_WIDTH+CONTROLS_GAP_X; int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+ (BUTTON_HEIGHT+CONTROLS_GAP_Y)+ (EDIT_HEIGHT+CONTROLS_GAP_Y)+ (EDIT_HEIGHT+CONTROLS_GAP_Y)+ (RADIO_HEIGHT+CONTROLS_GAP_Y); int x2=x1+GROUP_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_check_box2.Create(m_chart_id,m_name+"CheckBox2",m_subwin,x1,y1,x2,y2)) return(false); if(!m_check_box2.Text("CheckBox2")) return(false); if(!m_check_box2.Color(clrBlue)) return(false); if(!Add(m_check_box2)) return(false); m_check_box2.Checked(true); Comment(__FUNCTION__+" : Checked="+IntegerToString(m_check_box2.Checked())); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CControlsDialog::OnChangeCheckBox1(void) { Comment(__FUNCTION__+" : Checked="+IntegerToString(m_check_box1.Checked())); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CControlsDialog::OnChangeCheckBox2(void) { Comment(__FUNCTION__+" : Checked="+IntegerToString(m_check_box2.Checked())); } //+------------------------------------------------------------------+ //| Global Variables | //+------------------------------------------------------------------+ CControlsDialog ExtDialog; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create application dialog if(!ExtDialog.Create(0,"Controls",0,40,40,380,344)) return(INIT_FAILED); //--- run application ExtDialog.Run(); //--- succeed return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Comment(""); //--- destroy dialog ExtDialog.Destroy(reason); } //+------------------------------------------------------------------+ //| Expert chart event function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // event ID const long& lparam, // event parameter of the long type const double& dparam, // event parameter of the double type const string& sparam) // event parameter of the string type { ExtDialog.ChartEvent(id,lparam,dparam,sparam); } |