//+------------------------------------------------------------------+ //| FONTS.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window input color backdrop_clr=clrDarkSlateGray; input color code_clr=clrGold; input color font_clr=clrWhiteSmoke; input color button_clr=clrMidnightBlue; input int x_dist=10; input int y_dist=15; extern string font_edit="Terminal"; bool button_1=true; bool start=true; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+--------------;----------------------------------------------------+ int OnInit() { //--- indicator buffers mapping EventSetTimer(1); //--- return(INIT_SUCCEEDED); } //================================================================== void OnDeinit(const int reason) { f_Delete(); EventKillTimer(); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { char code=32; int u=32; ObjectGetString(0,"Panel_1",OBJPROP_TEXT,0,font_edit); if(button_1 && start) { start=false; RectLabelCreate("LabelCreate",x_dist,y_dist,970,400,backdrop_clr,backdrop_clr); for(int t=1;t<=7;t++) { for(int r=0;r<=31;r++) { f_Label("text_"+(string)r+(string)t,x_dist+12+30*r,y_dist+17+50*t,CharToStr(code),15,font_clr,font_edit); f_Label("numb_"+(string)r+(string)t,x_dist+12+30*r,y_dist+50*t,(string)u,8,code_clr); code++; u++; } } if(ObjectFind("butt_1")!=-1) ObjectDelete("butt_1"); ButtonCreate("butt_2",x_dist+25,y_dist+5,120,20,"Wingdings",9,font_clr,button_clr,false); ButtonCreate("butt_3",x_dist+148,y_dist+5,120,20,"Wingdings 2",9,font_clr,button_clr,false); ButtonCreate("butt_4",x_dist+271,y_dist+5,120,20,"Wingdings 3",9,font_clr,button_clr,false); ButtonCreate("butt_5",x_dist+394,y_dist+5,120,20,"Arial",9,font_clr,button_clr,false); ButtonCreate("butt_6",x_dist+847,y_dist+5,120,20,"Enter",9,font_clr,button_clr,false); EditCreate("Panel_1",font_edit,x_dist+517,y_dist+5,327,20); } ButtonCreate("butt_1",x_dist+4,y_dist+5,20,20,CharToStr(84),16,font_clr,button_clr,false,"Wingdings 2"); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--------------кнопка "X"---------------------------------- if(sparam=="butt_1" && !button_1) { button_1=true;start=true; return; } if(sparam=="butt_1" && button_1) { button_1=false; f_Delete();start=true; } //--------------кнопка "Wingdings"---------------------------------- if(sparam=="butt_2") { font_edit="Wingdings"; f_Delete();start=true; } //--------------кнопка "Wingdings 2"---------------------------------- if(sparam=="butt_3") { font_edit="Wingdings 2"; f_Delete();start=true; } //--------------кнопка "Wingdings 3"---------------------------------- if(sparam=="butt_4") { font_edit="Wingdings 3"; f_Delete();start=true; } //--------------кнопка "Arial"---------------------------------- if(sparam=="butt_5") { font_edit="Arial"; f_Delete();start=true; } //--------------кнопка "enter"---------------------------------- if(sparam=="butt_6") { f_Delete(); start=true; } } //+------------------------------------------------------------------+ // Удаляем объекты //+------------------------------------------------------------------+ void f_Delete() { ObjectDelete("butt_1"); ObjectDelete("butt_2"); ObjectDelete("butt_3"); ObjectDelete("butt_4"); ObjectDelete("butt_5"); ObjectDelete("butt_6"); ObjectDelete("LabelCreate"); ObjectDelete("Panel_1"); for(int w=1;w<=7;w++) { for(int e=0;e<=31;e++) { ObjectDelete("text_"+(string)e+(string)w); ObjectDelete("numb_"+(string)e+(string)w); } } } //+------------------------------------------------------------------+ //| Создает прямоугольную метку | //+------------------------------------------------------------------+ bool RectLabelCreate( const string name="RectLabel", // имя метки const int x=0, // координата по оси X const int y=0, // координата по оси Y const int width=500, // ширина const int height=180, // высота const color back_clr=clrRed, // цвет фона const color clr=clrRed, // цвет плоской границы (Flat) //--------------------------------------------------------------------------- const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль плоской границы const int line_width=1, // толщина плоской границы const bool back=false, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=false, // скрыт в списке объектов const long chart_ID=0, // ID графика const int sub_window=0, // номер подокна const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки const ENUM_BORDER_TYPE border_lab=BORDER_FLAT, // тип границы const long z_order=0) // приоритет на нажатие мышью { //--- сбросим значение ошибки ResetLastError(); if(ObjectFind(name)==-1) { //--- создадим прямоугольную метку ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0); //--- установим координаты метки ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- установим размеры метки ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- установим цвет фона ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- установим тип границы ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border_lab); //--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- установим цвет плоской рамки (в режиме Flat) ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- установим стиль линии плоской рамки ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); //--- установим толщину плоской границы ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- включим (true) или отключим (false) режим перемещения метки мышью ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); } //--- успешное выполнение return(true); } //+------------------------------------------------------------------+ //| Создает текстовую метку | //+------------------------------------------------------------------+ bool f_Label( const string name="Label", // имя метки const int x=0, // координата по оси X const int y=0, // координата по оси Y const string text="error", // текст const int font_size=10, // размер шрифта const color clr=clrRed, // цвет //------------------------------------------------------ const string font="Arial", // шрифт const double angle=0.0, // наклон текста const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // способ привязки const bool back=false, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=true, // скрыт в списке объектов const long chart_ID=0, // ID графика const int sub_window=0, // номер подокна const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки const long z_order=0) // приоритет на нажатие мышью { //--- сбросим значение ошибки ResetLastError(); if(ObjectFind(name)==-1) { //--- создадим текстовую метку ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0); //--- установим координаты метки ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- установим текст // ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- установим шрифт текста ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- установим размер шрифта ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- установим угол наклона текста ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); //--- установим способ привязки ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); //--- установим цвет ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- включим (true) или отключим (false) режим перемещения метки мышью ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); } ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); return(true); } //===============кнопки============================================== bool ButtonCreate(const string name="button", // имя кнопки const int x=0, // координата по оси X const int y=0, // координата по оси Y const int width=0, // ширина кнопки const int height=0, // высота кнопки const string text="error", // текст const int font_size=6, // размер шрифта const color clr=clrNONE, // цвет текста const color back_clr=clrNONE, // цвет фона const bool state=false, // нажата/отжата const string font="Arial", // шрифт const color border_clr=clrNONE, // цвет границы //------------------------------------------------ const bool back=false, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=false, // скрыт в списке объектов const long z_order=0) // приоритет на нажатие мышью { //--- сбросим значение ошибки ResetLastError(); if(ObjectFind(name)==-1) { //--- создадим кнопку ObjectCreate(0,name,OBJ_BUTTON,0,0,0); //--- установим координаты кнопки ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); //--- установим размер кнопки ObjectSetInteger(0,name,OBJPROP_XSIZE,width); ObjectSetInteger(0,name,OBJPROP_YSIZE,height); //--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER); //--- установим текст ObjectSetString(0,name,OBJPROP_TEXT,text); //--- установим шрифт текста ObjectSetString(0,name,OBJPROP_FONT,font); //--- установим размер шрифта ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size); //--- установим цвет текста ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- установим цвет фона ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr); //--- установим цвет границы ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,border_clr); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(0,name,OBJPROP_BACK,back); //--- включим (true) или отключим (false) режим перемещения кнопки мышью ObjectSetInteger(0,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(0,name,OBJPROP_SELECTED,selection); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger(0,name,OBJPROP_HIDDEN,hidden); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(0,name,OBJPROP_ZORDER,z_order); //----- нажата/отжата ObjectSetInteger(0,name,OBJPROP_STATE,state); } //--- успешное выполнение return(true); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Создает объект "Поле ввода" | //+------------------------------------------------------------------+ bool EditCreate( const string name="Edit", // имя объекта const string text="Arial", // текст const int x=110, // координата по оси X const int y=110, // координата по оси Y const int width=90, // ширина const int height=12, // высота //------------------------------------------------------------------ const color back_clr=clrDarkGray, // цвет фона const color border_clr=clrYellow, // цвет границы const string font="Arial", // шрифт const int font_size=10, // размер шрифта const ENUM_ALIGN_MODE align=ALIGN_CENTER, // способ выравнивания const bool read_only=false, // возможность редактировать const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки const color clr=clrBlack, // цвет текста const bool back=false, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=false, // скрыт в списке объектов const long z_order=0, // приоритет на нажатие мышью const long chart_ID=0, // ID графика const int sub_window=0 // номер подокна ) { //--- сбросим значение ошибки ResetLastError(); if(ObjectFind(name)==-1) { //--- создадим поле ввода ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0); //--- установим координаты объекта ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- установим размеры объекта ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- установим текст // ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- установим шрифт текста ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- установим размер шрифта ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- установим способ выравнивания текста в объекте ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align); //--- установим (true) или отменим (false) режим только для чтения ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only); //--- установим угол графика, относительно которого будут определяться координаты объекта ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- установим цвет текста ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- установим цвет фона ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- установим цвет границы ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- включим (true) или отключим (false) режим перемещения метки мышью ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); } ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- успешное выполнение return(true); } //+------------------------------------------------------------------+