//+------------------------------------------------------------------+ //| TMModuleDialog.mqh | //| Thorsten Fischer Copyright 2020 | //| https://mql5.tfsystem.de | //+------------------------------------------------------------------+ #property copyright "Thorsten Fischer Copyright 2020" #property link "https://mql5.tfsystem.de" #property version "1.00" #include #include #include #include //+------------------------------------------------------------------+ //| 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 CTMModuleDialog : public CAppDialog { private: CEdit m_edit; CButton m_button1; CButton m_button2; CButton m_button3; CEdit m_lots; CCheckBox m_check_autotrading; public: CTMModuleDialog(); ~CTMModuleDialog(); 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); protected: bool CreateEdit(void); bool CreateButton1(void); bool CreateButton2(void); bool CreateButton3(void); bool CreateLots(void); bool CreateCheckAutoTrading(void); //--- handlers of the dependent controls events void OnClickButton1(void); void OnClickButton2(void); void OnClickButton3(void); void OnChangeAutoTrading(void); }; //+------------------------------------------------------------------+ //| Event Handling | //+------------------------------------------------------------------+ EVENT_MAP_BEGIN(CTMModuleDialog) ON_EVENT(ON_CLICK,m_button1,OnClickButton1) ON_EVENT(ON_CLICK,m_button2,OnClickButton2) ON_EVENT(ON_CLICK,m_button3,OnClickButton3) ON_EVENT(ON_CHANGE,m_check_autotrading,OnChangeAutoTrading) EVENT_MAP_END(CAppDialog) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ CTMModuleDialog::CTMModuleDialog() { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ CTMModuleDialog::~CTMModuleDialog() { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CTMModuleDialog::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(!CreateEdit()) return(false); if(!CreateButton1()) return(false); if(!CreateButton2()) return(false); if(!CreateButton3()) return(false); if(!CreateLots()) return(false); if(!CreateCheckAutoTrading()) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the display field | //+------------------------------------------------------------------+ bool CTMModuleDialog::CreateEdit(void) { //--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP; int x2=ClientAreaWidth()-INDENT_RIGHT; int y2=y1+EDIT_HEIGHT; //--- create if(!m_edit.Create(m_chart_id,m_name+"Edit",m_subwin,x1,y1,x2,y2)) return(false); if(!m_edit.ReadOnly(true)) return(false); if(!Add(m_edit)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button1" button | //+------------------------------------------------------------------+ bool CTMModuleDialog::CreateButton1(void) { //--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)*2; int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button1.Text("Long")) return(false); if(!Add(m_button1)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button2" button | //+------------------------------------------------------------------+ bool CTMModuleDialog::CreateButton2(void) { //--- coordinates int x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X); int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)*2; int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_button2.Create(m_chart_id,m_name+"Button2",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button2.Text("Short")) return(false); if(!Add(m_button2)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button3" fixed button | //+------------------------------------------------------------------+ bool CTMModuleDialog::CreateButton3(void) { //--- coordinates int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X); int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)*2; int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_button3.Create(m_chart_id,m_name+"Button3",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button3.Text("Sell")) return(false); if(!Add(m_button3)) return(false); m_button3.Locking(true); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the display field | //+------------------------------------------------------------------+ bool CTMModuleDialog::CreateLots(void) { //--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y); int x2=ClientAreaWidth()-INDENT_RIGHT; int y2=y1+EDIT_HEIGHT; //--- create if(!m_lots.Create(m_chart_id,m_name+"Lots",m_subwin,x1,y1,x2,y2)) return(false); if(!m_lots.ReadOnly(false)) return(false); if(!Add(m_lots)) return(false); if(!m_lots.Text("0,1")) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CTMModuleDialog::CreateCheckAutoTrading(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); int x2=x1+GROUP_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!m_check_autotrading.Create(m_chart_id,m_name+"CheckBox1",m_subwin,x1,y1,x2,y2)) return(false); if(!m_check_autotrading.Text("Auto Trading An")) return(false); if(!m_check_autotrading.Color(clrBlue)) return(false); if(!Add(m_check_autotrading)) return(false); if(!m_check_autotrading.Checked(true)) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CTMModuleDialog::OnClickButton1(void) { //m_ } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CTMModuleDialog::OnClickButton2(void) { m_edit.Text(__FUNCTION__); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CTMModuleDialog::OnClickButton3(void) { //if(m_button3.Pressed()) // m_edit.Text(__FUNCTION__+"On"); //else m_edit.Text(__FUNCTION__+"Off"); } //+------------------------------------------------------------------+ //| Event handler | //+------------------------------------------------------------------+ void CTMModuleDialog::OnChangeAutoTrading(void) { m_edit.Text(__FUNCTION__+" : Checked = "+IntegerToString(m_check_autotrading.Checked())); } //+------------------------------------------------------------------+