//+------------------------------------------------------------------+
//| News_calendar_2exp.mq4 |
//| Vorese |
//| vorese@yandex.ru|
//+------------------------------------------------------------------+
#property copyright "Vorese"
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
#property description "Íåîáõîäèìî äîáàâèòü àäðåñ ' http://ru.investing.com/economic-calendar/ '"
#property description "â ñïèñîê ðàçðåøåííûõ URL âî âêëàäêå ' Ñåðâèñ / Íàñòðîéêè / Ñîâåòíèêè '"
#property description "update - ïåðèîä îáíîâëåíèÿ â ñåê."
#property description "mck_local_times - ðàçíèöà âî âðåìåíè ìåæäó Ìîñêâîé è âðåìåíåì íà êîìïüþòåðå"
input int update=9;
input int mck_local_times=0;
input color color_text=clrBlack;
input color border=clrGreen;
input color button_off=clrLimeGreen;
input color button_on=clrGold;
input color rect_label=clrBlack;
input color Col_01=clrTurquoise;
input color Col_02=clrAliceBlue;
input color Col_03=clrDarkOrange;
input color Col_04=clrLimeGreen;
input int X_DISTANCE=5;
input int Y_DISTANCE=15;
//+++++++++++++++++++++++++++++
bool button_0=false;
bool button_1=false;
bool button_2=false;
bool button_3=false;
bool button_4=false;
color col_but0=clrNONE;
color col_but1=clrNONE;
color col_but2=clrNONE;
color col_but3=clrNONE;
color col_but4=clrNONE;
string symb=_Symbol;
int r=0;
int t=0;
int file_size=0;
int counter_timer=1;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
col_but0=button_off;
col_but1=button_off;
col_but2=button_off;
col_but3=button_off;
col_but4=button_off;
ButtonCreate("table",X_DISTANCE+103,Y_DISTANCE,143,9,"ïðåäâ. ïðîãí. ôàêò."+" ","Verdana",7,color_text,Col_01);
ButtonCreate("time",X_DISTANCE,Y_DISTANCE,102,9,"Local","Verdana",7,color_text,Col_01);
ButtonCreate("gmt",X_DISTANCE+475,Y_DISTANCE,152,9,"Terminal","Verdana",7,color_text,Col_01);
//--ïðîâåðèì íàñòðîéêè êàëåíäàðÿ--------------------------------------
if(GlobalVariableCheck("text_exp"+symb))
{
button_0=true; col_but0=button_on;
}
if(GlobalVariableCheck("$$$_exp"+symb))
{
button_1=true; col_but1=button_on;
}
if(GlobalVariableCheck("$$_exp"+symb))
{
button_2=true; col_but2=button_on;
}
if(GlobalVariableCheck("$_exp"+symb))
{
button_3=true; col_but3=button_on;
}
//--- create timer
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
f_Delete_object(r);
ObjectDelete("table");
ObjectDelete("time");
ObjectDelete("gmt");
ObjectDelete("button0");
ObjectDelete("button1");
ObjectDelete("button2");
ObjectDelete("button3");
ObjectDelete("button4");
GlobalVariableDel("update");
// ObjectsDeleteAll(0,OBJ_BUTTON);
// ObjectsDeleteAll(0,OBJ_LABEL);
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTimer()
{
bool tic=false;
ResetLastError();
//===========óñëîâèÿ äëÿ çàãðóçêè ñòðàíèöû============================
if(counter_timer==1)
{
if(file_size<100000) // åñëè ñòðàíèöà íå çàãðóæåíà èëè çàãðóæåíà íå ïîëíîñòüþ
{ file_size=f_Calendar();tic=true;}
if(Minute()==0 || Minute()==15 || Minute()==30 || Minute()==45) //êàæäûå 15 ìèíóò ,êðîìå âûõîäíûõ
file_size=f_Calendar();
if(GlobalVariableCheck("update") && !tic) // íàæàòà êíîïêà "îáíîâèòü" èíäèêàòîðà
{
file_size=f_Calendar();
GlobalVariableDel("update");
}
}
counter_timer++;
if(counter_timer>=update+1)counter_timer=1;
//=====âåðõíÿÿ ñòðîêà êàëåíäàðÿ=======================================
ObjectSetString(0,"time",OBJPROP_TEXT,TimeToString(TimeLocal(),TIME_SECONDS));
ObjectSetString(0,"gmt",OBJPROP_TEXT,"#"+(string)counter_timer+"# Terminal "+TimeToString(TimeCurrent(),TIME_SECONDS));
ButtonCreate("button0",X_DISTANCE+250,Y_DISTANCE,40,9,"òåêñò","Verdana",6,color_text,col_but0,button_0);
ButtonCreate("button1",X_DISTANCE+291,Y_DISTANCE,40,9,"$$$","Verdana",6,color_text,col_but1,button_1);
ButtonCreate("button2",X_DISTANCE+332,Y_DISTANCE,40,9,"$$","Verdana",6,color_text,col_but2,button_2);
ButtonCreate("button3",X_DISTANCE+373,Y_DISTANCE,40,9,"$","Verdana",6,color_text,col_but3,button_3);
if(!GlobalVariableCheck("update"))
{
button_4=false;col_but4=button_off;
}
ButtonCreate("button4",X_DISTANCE+414,Y_DISTANCE,60,9,"îáíîâèòü ","Verdana",6,color_text,col_but4,button_4);
//=====÷èòàåì ôàéë , íàõîäèì íà÷àëî è êîíåö òàáëèöû===================
int handle;
int string_counter=0;
int begin_table=0;
int end_table=0;
string temp_array[6000];
handle=FileOpen("investing.html",FILE_CSV|FILE_READ|FILE_SHARE_READ,CP_ACP);
if(handle<1)Print("Ôàéë íå ïðî÷èòàí ",handle);
else
while(!FileIsEnding(handle))
{
temp_array[string_counter]=FileReadString(handle);
if(f_Position(temp_array[string_counter],0)>=0 && string_counter>600)
{
begin_table=string_counter;
}
if(begin_table>0 && f_Position(temp_array[string_counter],1)>=0)
{
end_table=string_counter; break;
}
string_counter++;
}
FileClose(handle);
//===============Âûðåçàåì òåêñò èç òåãîâ==============================
string time_ind[70],//âðåìÿ
currency[70],// âàëþòà
volatility[70],//âîëàòèëüíîñòü
text_ind[70],//òåêñò
previous[70],//ïðåäûäóùèé
forecast[70],//ïðîãíîç
fact[70],//ôàêò
compliance[70];//îæèäàíèÿ
string array_table="",
volatility_str="?",
compliance_str="?",
previous_str="",
forecast_str="",
fact_str="";
int sum_string=0,
td_class=0,
td=0,
angle=0,
span=0,
span_1=0,
pos_begin=0,
pos_end=0,
counter_news=0,
counter_str=0,
pos_t=0,
i=begin_table;
//-------------------------------------------------------------------
while(i!=end_table && counter_news<70)// íå áîëåå 70 ñòðîê
{
td_class=f_Position(temp_array[i],2);
td=f_Position(temp_array[i],3);
if(td_class<0 && td<0) // èùåì ñòðîêè íîâîñòåé
{ sum_string=0; i++; continue; }
else
{
if(td==0)
{ i++;continue;}
else
sum_string++;
}
angle=f_Position(temp_array[i],4);
span=f_Position(temp_array[i],5);
span_1=f_Position(temp_array[i],6);
pos_t=f_Position(temp_array[i],14);
if(sum_string==1) //âðåìÿ
{
if(pos_t<0)
time_ind[counter_news]=StringSubstr(temp_array[i],angle+1,5);
else
time_ind[counter_news]=StringSubstr(temp_array[i],pos_t+13,5);
}
if(sum_string==2) //âàëþòà
{ currency[counter_news]=StringSubstr(temp_array[i],span+8,3); }
if(sum_string==3) //âîëàòèëüíîñòü
{
array_table=StringSubstr(temp_array[i],0,angle);
volatility_str=f_Cyrillic(array_table);
if(f_Position(volatility_str,7)>0)
volatility[counter_news]="$$$";
else
{
if(f_Position(volatility_str,8)>0)
volatility[counter_news]="$$";
else
{
if(f_Position(volatility_str,9)>0)
volatility[counter_news]="$";
else
{
volatility[counter_news]="?";
}
}
}
}
if(sum_string==4) //òåêñò
{
if(span_1<0)
array_table=StringSubstr(temp_array[i],angle+1,td-angle-1);
else
array_table=StringSubstr(temp_array[i],angle+1,span_1-angle-7);
text_ind[counter_news]=StringTrimLeft(f_Cyrillic(array_table));
}
if(sum_string==5) //ðåçóëüòàò îæèäàíèé , ôàêò
{
array_table=StringSubstr(temp_array[i],0,angle+1);
compliance_str=f_Cyrillic(array_table);
if(f_Position(compliance_str,10)>0)
compliance[counter_news]="+";
else
{
if(f_Position(compliance_str,11)>0)
compliance[counter_news]="=";
else
{
if(f_Position(compliance_str,12)>0)
compliance[counter_news]="-";
else
{
compliance[counter_news]="?";
}
}
}
fact_str=StringSubstr(temp_array[i],angle+1,td-angle-1);
if(f_Position(fact_str,13)>=0)
fact[counter_news]="----";
else
fact[counter_news]=fact_str;
}
if(sum_string==6) //ïðîãíîç
forecast_str=StringSubstr(temp_array[i],angle+1,td-angle-1);
if(f_Position(forecast_str,13)>=0)
forecast[counter_news]="----";
else
forecast[counter_news]=forecast_str;
if(sum_string==7) //ïðåäûäóùèé
previous_str=StringSubstr(temp_array[i],angle+1,td-angle-1);
if(f_Position(previous_str,13)>=0)
previous[counter_news]="----";
else
previous[counter_news]=previous_str;
if(sum_string==8) { counter_news++; counter_str++; }
i++;
}
//=========ôîðìèðóåì òàáëèöó==========================================
//óäàëÿåì âñå îáúåêòû ïîñëå èçìåí. â êàëåíäàðå
if(counter_str!=r && r>0)
f_Delete_object(r);
//---------------------------------------------------------------------
r=0;
t=0;
color color_button=Col_04;
color color_compliance=Col_04;
while(r!=counter_str) //ôèëüòðóåì ïî âîëàòèëüíîñòè
{
if(volatility[r]=="$$$" && button_1)
{ r++;continue;}
if(volatility[r]=="$$" && button_2)
{ r++;continue;}
if(volatility[r]=="$" && button_3)
{ r++;continue;}
//--------------------------------------------------------------------
//öâåò ïðîøåäøèõ è áóäóùèõ íîâîñòåé
if((StrToTime(time_ind[r])>=(TimeLocal()+mck_local_times*3600)) || TimeDayOfWeek(TimeLocal())==0 || TimeDayOfWeek(TimeLocal())==6)
color_button=Col_04;
else
color_button=Col_01;
if(compliance[r]=="+")color_compliance=Col_02;
else
{
if(compliance[r]=="-")color_compliance=Col_03;
else
{
color_compliance=color_button;
}
}
// ñîçäàåì òàáëèöó
ButtonCreate("time"+(string)t,X_DISTANCE,Y_DISTANCE+13+11*t,40,9,TimeToString(StrToTime(time_ind[r])-mck_local_times*3600,TIME_MINUTES),"Verdana",6,color_text,color_button,false,border);
ButtonCreate("currency"+(string)t,X_DISTANCE+41,Y_DISTANCE+13+11*t,30,9,currency[r],"Verdana",6,color_text,color_button,false,border);
ButtonCreate("volatility"+(string)t,X_DISTANCE+72,Y_DISTANCE+13+11*t,30,9,volatility[r],"Verdana",6,color_text,color_button,false,border);
ButtonCreate("previous"+(string)t,X_DISTANCE+103,Y_DISTANCE+13+11*t,40,9,previous[r],"Verdana",6,color_text,color_button,false,border);
ButtonCreate("forecast"+(string)t,X_DISTANCE+144,Y_DISTANCE+13+11*t,40,9,forecast[r],"Verdana",6,color_text,color_button,false,border);
ButtonCreate("fact"+(string)t,X_DISTANCE+185,Y_DISTANCE+13+11*t,40,9,fact[r],"Verdana",6,color_text,color_compliance,false,border);
ButtonCreate("compliance"+(string)t,X_DISTANCE+226,Y_DISTANCE+13+11*t,20,9,compliance[r],"Verdana",6,color_text,color_compliance,false,border);
if(!button_0)
{
RectLabelCreate("LabelCreate"+(string)t,X_DISTANCE+247,Y_DISTANCE+12+11*t,380,12,rect_label,rect_label);
f_Label("text"+(string)t,X_DISTANCE+250,Y_DISTANCE+10+11*t,text_ind[r],7,"Verdana",color_button);
}
r++; t++;
}
ChartRedraw();
}
//====================================================================
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
//====================================================================
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
//--- ñáðîñèì çíà÷åíèå îøèáêè
ResetLastError();
//--- ïðîâåðêà ñîáûòèÿ íàæàòèÿ íà êíîïêó ìûøè
if(id==CHARTEVENT_OBJECT_CLICK)
{
//--------------êíîïêà "òåêñò"----------------------------------
if(sparam=="button0" && !button_0)
{
button_0=true;
GlobalVariableSet("text_exp"+symb,0); // çàïîìíèì , ÷òî êíîïêà íàæàòà
for(int v=0;v<r;v++)
{
ObjectDelete("text"+(string)v);
ObjectDelete("LabelCreate"+(string)v);
}
col_but0=button_on;return;
}
if(sparam=="button0" && button_0)
{
button_0=false;col_but0=button_off;
GlobalVariableDel("text_exp"+symb); // çàïîìíèì , ÷òî êíîïêà îòæàòà
return;
}
//---------------êíîïêà "$$$"-----------------------------------
if(sparam=="button1" && !button_1)
{
button_1=true;
GlobalVariableSet("$$$_exp"+symb,0);
f_Delete_object(r);
col_but1=button_on;
return;
}
if(sparam=="button1" && button_1)
{
button_1=false;col_but1=button_off;
GlobalVariableDel("$$$_exp"+symb);
return;
}
//---------------êíîïêà "$$"------------------------------------
if(sparam=="button2" && !button_2)
{
button_2=true;
GlobalVariableSet("$$_exp"+symb,0);
f_Delete_object(r);
col_but2=button_on;
return;
}
if(sparam=="button2" && button_2)
{
button_2=false;col_but2=button_off;
GlobalVariableDel("$$_exp"+symb);
return;
}
//---------------êíîïêà "$"------------------------------------
if(sparam=="button3" && !button_3)
{
button_3=true;
GlobalVariableSet("$_exp"+symb,0);
f_Delete_object(r);
col_but3=button_on;
return;
}
if(sparam=="button3" && button_3)
{
button_3=false;col_but3=button_off;
GlobalVariableDel("$_exp"+symb);
return;
}
}
//---------------êíîïêà "îáíîâèòü"------------------------------------
if(sparam=="button4" && !button_4)
{
button_4=true; col_but4=button_on;
GlobalVariableSet("update",0);
return;
}
if(sparam=="button4" && button_4)
{
button_4=false;col_but4=button_off;
GlobalVariableDel("update");
return;
}
ChartRedraw();
return;
}
//+------------------------------------------------------------------+
//======çàãðóçêà ñòðàíèöû=============================================
int f_Calendar()
{
string cookie=NULL,headers;
char post[],result[];
int res=0;
string investing_url="http://ru.investing.com/economic-calendar/";
//--- îáíóëÿåì êîä ïîñëåäíåé îøèáêè
ResetLastError();
res=WebRequest("GET",investing_url,cookie,NULL,50,post,0,result,headers);
//--- ïðîâåðêà îøèáîê
if(res==-1)
{
Print("Îøèáêà â WebRequest. Êîä îøèáêè =",GetLastError());
//--- âîçìîæíî URL îòñóòñòâóåò â ñïèñêå, âûâîäèì ñîîáùåíèå î íåîáõîäèìîñòè åãî äîáàâëåíèÿ
// MessageBox("Íåîáõîäèìî äîáàâèòü àäðåñ '"+investing_url+"' â ñïèñîê ðàçðåøåííûõ URL âî âêëàäêå 'Ñîâåòíèêè'","Îøèáêà",MB_ICONINFORMATION);
}
else
{
if(ArraySize(result)<100000)
PrintFormat("Ôàéë çàãðóæåí íå ïîëíîñòüþ, Ðàçìåð ôàéëà =%d áàéò.",ArraySize(result));
else
{
PrintFormat("Ôàéë óñïåøíî çàãðóæåí, Ðàçìåð ôàéëà =%d áàéò.",ArraySize(result));//--- óñïåøíàÿ çàãðóçêà
//--- ñîõðàíÿåì äàííûå â ôàéë
int filehandle=FileOpen("investing.html",FILE_WRITE|FILE_BIN);
//--- ïðîâåðêà îøèáêè
if(filehandle!=INVALID_HANDLE)
{
//--- ñîõðàíÿåì ñîäåðæèìîå ìàññèâà result[] â ôàéë
FileWriteArray(filehandle,result,0,ArraySize(result));
//--- çàêðûâàåì ôàéë
FileClose(filehandle);
}
else Print("Îøèáêà â FileOpen. Êîä îøèáêè =",GetLastError());
}
}
return(ArraySize(result));
}
//+------------------------------------------------------------------+
//===================================================================
void f_Delete_object(int max)
{
for(int v=0;v<max;v++)
{
ObjectDelete("time"+(string)v);
ObjectDelete("currency"+(string)v);
ObjectDelete("volatility"+(string)v);
ObjectDelete("previous"+(string)v);
ObjectDelete("forecast"+(string)v);
ObjectDelete("fact"+(string)v);
ObjectDelete("compliance"+(string)v);
ObjectDelete("text"+(string)v);
ObjectDelete("LabelCreate"+(string)v);
}
}
//===========ïåðåêîäèðóåì â êèðèëëèöó=================================
string f_Cyrillic(string text_str)
{
uchar char_code=0;
uchar code=0;
uchar flag=0;
string ansi="";
uchar array_ansi[];
int count_array=StringToCharArray(text_str,array_ansi,0,-1,CP_ACP);
for(int c=0;c<count_array;c++)
{
code=array_ansi[c];
if(code==208) { flag=1;continue;} //P
else
{
if(code==209) { flag=2;continue;} //C
else
{
if(code==145 && flag==2)char_code=184; //¸
else
{
if(code<128) char_code=code;
else
{
if(flag==1) char_code=code+48;
else
{
if(flag==2) char_code=code+112;
}
}
}
}
}
ansi=ansi+CharToString(char_code);
}
return(ansi);
}
//===================ïîçèöèè ïîäñòðîê================================
int f_Position(string text,int flags)
{
string tegi[15]=
{
"<table id=","</table>","<td class=","</td>",">","</span>","<span",
"Âûñîêàÿ","Óìåðåííàÿ","Íèçêàÿ","Ëó÷øå","ñîîòâåòñòâèè","Õóæå"," ","evtStrtTime"
};
int position=StringFind(text,tegi[flags],0);
return(position);
}
//=====================================================================
//+------------------------------------------------------------------+
//| Ñîçäàåò òåêñòîâóþ ìåòêó |
//+------------------------------------------------------------------+
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 string font="Verdana", // øðèôò
const color clr=clrRed, // öâåò
//------------------------------------------------------
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);
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- óñïåøíîå âûïîëíåíèå
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 string font="Verdana", // øðèôò
const int font_size=6, // ðàçìåð øðèôòà
const color clr=clrNONE, // öâåò òåêñòà
const color back_clr=clrNONE, // öâåò ôîíà
const bool state=false, // íàæàòà/îòæàòà
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);
}
ObjectSetString(0,name,OBJPROP_TEXT,text);
ObjectSetInteger(0,name,OBJPROP_STATE,state);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr);
//--- óñïåøíîå âûïîëíåíèå
return(true);
}
//+------------------------------------------------------------------+
//| Ñîçäàåò ïðÿìîóãîëüíóþ ìåòêó |
//+------------------------------------------------------------------+
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=C'236,233,216', // öâåò ôîíà
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);
}//====================================================================
//+------------------------------------------------------------------+
Comments