219 lines
No EOL
19 KiB
MQL5
219 lines
No EOL
19 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| ControlsButton.mq5 |
|
|
//| Copyright 2017, MetaQuotes Software Corp. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2017, MetaQuotes Software Corp."
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
#property description "Das Panel der Anzeige und der Dialoge. Demonstration der CButton Klasse"
|
|
#include <Controls\Dialog.mqh>
|
|
#include <Controls\Button.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:
|
|
CButton m_button1; // the button object
|
|
CButton m_button2; // the button object
|
|
CButton m_button3; // the fixed button 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 CreateButton1(void);
|
|
bool CreateButton2(void);
|
|
bool CreateButton3(void);
|
|
//--- handlers of the dependent controls events
|
|
void OnClickButton1(void);
|
|
void OnClickButton2(void);
|
|
void OnClickButton3(void);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Event Handling |
|
|
//+------------------------------------------------------------------+
|
|
EVENT_MAP_BEGIN(CControlsDialog)
|
|
ON_EVENT(ON_CLICK,m_button1,OnClickButton1)
|
|
ON_EVENT(ON_CLICK,m_button2,OnClickButton2)
|
|
ON_EVENT(ON_CLICK,m_button3,OnClickButton3)
|
|
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(!CreateButton1())
|
|
return(false);
|
|
if(!CreateButton2())
|
|
return(false);
|
|
if(!CreateButton3())
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the "Button1" button |
|
|
//+------------------------------------------------------------------+
|
|
bool CControlsDialog::CreateButton1(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT;
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
|
|
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("Button1"))
|
|
return(false);
|
|
if(!Add(m_button1))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the "Button2" button |
|
|
//+------------------------------------------------------------------+
|
|
bool CControlsDialog::CreateButton2(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X);
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
|
|
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("Button2"))
|
|
return(false);
|
|
if(!Add(m_button2))
|
|
return(false);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create the "Button3" fixed button |
|
|
//+------------------------------------------------------------------+
|
|
bool CControlsDialog::CreateButton3(void)
|
|
{
|
|
//--- coordinates
|
|
int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);
|
|
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
|
|
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("Locked"))
|
|
return(false);
|
|
if(!Add(m_button3))
|
|
return(false);
|
|
m_button3.Locking(true);
|
|
//--- succeed
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CControlsDialog::OnClickButton1(void)
|
|
{
|
|
Comment(__FUNCTION__);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CControlsDialog::OnClickButton2(void)
|
|
{
|
|
Comment(__FUNCTION__);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Event handler |
|
|
//+------------------------------------------------------------------+
|
|
void CControlsDialog::OnClickButton3(void)
|
|
{
|
|
if(m_button3.Pressed())
|
|
Comment(__FUNCTION__+" Status des Elements: On");
|
|
else
|
|
Comment(__FUNCTION__+" Status des Elements: Off");
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| 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)
|
|
{
|
|
//--- Kommentare löschen
|
|
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);
|
|
} |