void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- проверим событие на нажатие кнопки мышки
if(id==CHARTEVENT_OBJECT_CLICK)
{
string clickedChartObject=sparam;
//--- если нажатие на объекте с именем buttonID
if(clickedChartObject==buttonID)
{
//--- состояние кнопки - нажата кнопка или нет
bool selected=ObjectGetInteger(0,buttonID,OBJPROP_STATE);
//--- выведем в лог отладочное сообщение
Print("Кнопка нажата = ",selected);
int customEventID; // номер пользовательского события для отправки
string message; // сообщение для отправки в событии
//--- если кнопка нажата
if(selected)
{
message="Кнопка нажата";
customEventID=CHARTEVENT_CUSTOM+1;
}
else // кнопка не нажата
{
message="Кнопка отжата";
customEventID=CHARTEVENT_CUSTOM+999;
}
//--- отправим пользовательское событие "своему"графику
EventChartCustom(0,customEventID-CHARTEVENT_CUSTOM,0,0,message);
//--- отправим сообщение всем открытым графикам
BroadcastEvent(ChartID(),0,"Broadcast Message");
//--- отладочное сообщение
Print("Отправлено событие с ID = ",customEventID);
}
ChartRedraw();// принудительно перерисуем все объекты на графике
}
//--- проверим событие на принадлежность к пользовательским событиям
if(id>CHARTEVENT_CUSTOM)
{
if(id==broadcastEventID)
{
Print("Получили широковещательное сообщение от графика с id = "+lparam);
}
else
{
//--- прочитаем текстовое сообщение в событии
string info=sparam;
Print("Обрабатывается ПОЛЬЗОВАТЕЛЬСКОЕ событие с ID = ",id);
//--- выведем сообщение в метке
ObjectSetString(0,labelID,OBJPROP_TEXT,sparam);
ChartRedraw();// принудительно перерисуем все объекты на графике
}
}
}
//+------------------------------------------------------------------+
//| послать широковещательное сообщение всем открытм графикам |
//+------------------------------------------------------------------+
void BroadcastEvent(long lparam,double dparam,string sparam)