События CHART_EVENT

 

Господа, подскажите, пжл, с целью изучения событий написал вот такой небольшой код:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
    switch (id)
    {
    case CHARTEVENT_OBJECT_CHANGE:
    {
      printf("change "+sparam);
    }  
    case CHARTEVENT_OBJECT_CREATE:
    {
      printf("create "+sparam);
    }
    case CHARTEVENT_OBJECT_DELETE:
    {
      printf("delete "+sparam);
    }
    case CHARTEVENT_OBJECT_DRAG:
    {
      printf("drag "+sparam);
    }
    case CHARTEVENT_OBJECT_CLICK:
    {
      printf("click "+sparam);
    }
    case CHARTEVENT_OBJECT_ENDEDIT:
    {
      printf("endedit "+sparam);
    }
    case CHARTEVENT_KEYDOWN:
    {
      printf("key ");
    }
    case CHARTEVENT_MOUSE_MOVE:
    {
      printf("mose ");
    }
    case CHARTEVENT_CUSTOM:
    {
      printf("cust ");
    }    
    case CHARTEVENT_CUSTOM_LAST:
    {
      printf("cust last ");
    }
    case CHARTEVENT_CHART_CHANGE:
    {
      printf("chart change ");
    }
    case CHARTEVENT_CLICK:
    {
      printf("chart click ");
    }
    default:printf("id "+IntegerToString(id)+" "+sparam);
    }
  }

В результате, когда я создаю/удаляю/изменяю объект многие события выполняются по несколько раз, что не очень удобно для обработки одного и того же события.

При этом я обратил внимание, что при изменении привязок или добавлении прямоугольника возникает в самом конце уникальное событие id=2 (при этом в sparam хранится имя прямоугольника) 

При удалении - id=6 (sparam - аналогично)

При изменении свойств объекта параметров id=8

 

Может кто-то знает, что это за события. Очень хочется как минимум почитать по ним справку.

 

Спасибо! 

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
meneo:

Господа, подскажите, пжл, с целью изучения событий написал вот такой небольшой код:

В результате, когда я создаю/удаляю/изменяю объект многие события выполняются по несколько раз, что не очень удобно для обработки одного и того же события.

При этом я обратил внимание, что при изменении привязок или добавлении прямоугольника возникает в самом конце уникальное событие id=2 (при этом в sparam хранится имя прямоугольника) 

При удалении - id=6 (sparam - аналогично)

При изменении свойств объекта параметров id=8

 

Может кто-то знает, что это за события. Очень хочется как минимум почитать по ним справку.

 

Спасибо! 

В каждом case нужно поставить break. Типа:

    case CHARTEVENT_OBJECT_DELETE:
       printf("delete "+sparam);
       break; 
    case CHARTEVENT_OBJECT_DRAG:
       //---  ...
 
uncleVic:

В каждом case нужно поставить break. Типа:

Vic, спасибо!

минуту назад сообразил )))))) 

 

когда изменяешь имя объекта срабатывает delete с старым именем, потом по очереди create и change с новым

можно ли как-то в момент срабатывания delete выяснить, что этот delete на самом деле change? )

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5