Files

106 lines
4.5 KiB
Plaintext
Raw Permalink Normal View History

2018-03-14 11:26:36 +01:00
//+------------------------------------------------------------------+
//| CSymbolButton.mqh |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| Class for creating a symbol button |
//+------------------------------------------------------------------+
class CSymbolButton
{
private:
double m_top; // Y coordinate of the upper-left corner
double m_left; // X coordinate of the upper-left corner
double m_height; // button height
double m_width; // button width
color m_txt_col; // text color
color m_bg_col; // background color
int m_ind_handle; // pointer to the indicator for the button
string m_symbol_name; // name of the Symbol, for which the button is created
public:
string m_button_name; // button's unique name
bool CreateSymbolButton(double top,double left,double height,double width,
string buttonID,color TextColor,color BGColor);// constructor
bool DeleteSymbolButton();
void MoveButton(int x_shift,int y_shift);
color GetBGColor(){return(m_bg_col);};
void SetBGColor(color bg_color);
string GetSymbolName(){return(m_symbol_name);};
void SetSymbolName(string s){m_symbol_name=s;};
};
//+------------------------------------------------------------------+
//| delete Symbol button |
//+------------------------------------------------------------------+
bool CSymbolButton::DeleteSymbolButton()
{
if(ObjectFind(0,m_button_name)>=0)
{
//Print("Delete the cell with the name ",m_button_name);
if(!ObjectDelete(0,m_button_name))
{
Print("Failed to delete the object named ",m_button_name,"! Error #",GetLastError());
}
else
{
//ChartRedraw(0);
}
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| setup object of Class CSymbolButton |
//+------------------------------------------------------------------+
bool CSymbolButton::CreateSymbolButton(double top,double left,double height,double width,
string buttonID,color TextColor,color BGColor)
{
bool res=false;
//---
if(ObjectFind(0,buttonID)<0)
{
m_top=top;
m_left=left;
ObjectCreate(ChartID(),buttonID,OBJ_BUTTON,0,0,0,0,0);
ObjectSetInteger(0,buttonID,OBJPROP_COLOR,TextColor);
ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,BGColor);
ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,int(m_left));
ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,int(m_top));
ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,int(width));
ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,int(height));
ObjectSetString(0,buttonID,OBJPROP_FONT,"Arial");
ObjectSetString(0,buttonID,OBJPROP_TEXT,buttonID);
ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);
ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
m_button_name=buttonID;
SetSymbolName(buttonID);
//ChartRedraw(ChartID());
}
// else
// {
// }
//---
return(res);
}
//+------------------------------------------------------------------+
//| set Symbol button background color |
//+------------------------------------------------------------------+
void CSymbolButton::SetBGColor(color bg_color)
{
ObjectSetInteger(0,m_button_name,OBJPROP_BGCOLOR,bg_color);
}
//+------------------------------------------------------------------+
//| shift the symbol button by the specified value |
//+------------------------------------------------------------------+
void CSymbolButton::MoveButton(int x_shift,int y_shift)
{
m_top+=y_shift;
m_left+=x_shift;
ObjectSetInteger(0,m_button_name,OBJPROP_XDISTANCE,int(m_left));
ObjectSetInteger(0,m_button_name,OBJPROP_YDISTANCE,int(m_top));
//ChartRedraw(0);
}