Как узнать имя удаляемого объекта

 
Пользуясь обработчиком события OnChartEvent пытаюсь узнать имя графического объекта после удаления. Смотрю перед удалением имя Trendline 61912, после удаления, при помощи Alert мне выдается имя удаленного объекта, но! не Trendline 61912 - как должно быть, а постоянно цифру 339. Так как же узнать имя удаленного объекта?
 
Michael-80:
Пользуясь обработчиком события OnChartEvent пытаюсь узнать имя графического объекта после удаления. Смотрю перед удалением имя Trendline 61912, после удаления, при помощи Alert мне выдается имя удаленного объекта, но! не Trendline 61912 - как должно быть, а постоянно цифру 339. Так как же узнать имя удаленного объекта?
   ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true); // добавить в OnInit()


   if(id == CHARTEVENT_OBJECT_DELETE) // добавить в OnChartEvent(...)
   {
      Print(sparam);
   }
 
Sergey Kolemanov:

Спасибо! Работает. Такой вариант я пытался реализовать, но что то пошло не так).

Одно меня смущает, событие if(id == CHARTEVENT_OBJECT_DELETE) должно срабатывать только при удалении объекта. Поправьте меня, если я не прав. Дело в том, что у меня событие срабатывает на каждом тике! И что самое неприятное, удаляются другие объекты, созданные этим же советником с разными именами. Такого ведь не должно быть?

 
Michael-80:

Спасибо! Работает. Такой вариант я пытался реализовать, но что то пошло не так).

Одно меня смущает, событие if(id == CHARTEVENT_OBJECT_DELETE) должно срабатывать только при удалении объекта. Поправьте меня, если я не прав. Дело в том, что у меня событие срабатывает на каждом тике! И что самое неприятное, удаляются другие объекты, созданные этим же советником с разными именами. Такого ведь не должно быть?

У Вас скорее всего на каждом тике идёт удаление объектов, а CHARTEVENT_OBJECT_DELETE просто отслеживает это событие. В любом случае, чтобы сказать что-то определённое нужен код...а так, это гадание на кофейной гуще.

 
Да, да, Сергей))) Обнаружил проблему. Для того, чтобы мой советник отображал на графике спред, создается метка со значением спреда. Но для поддержки актуальных данных, старый объект приходится удалять...Главное, что разобрался...
 
Michael-80:
Да, да, Сергей))) Обнаружил проблему. Для того, чтобы мой советник отображал на графике спред, создается метка со значением спреда. Но для поддержки актуальных данных, старый объект приходится удалять...Главное, что разобрался...

Создавать текстовую метку нужно один раз, желательно в OnInit() (зависит от задачи), если нужно менять её текст в ходе работы программы то просто используем свойство

ObjectSetString(..,..,OBJPROP_TEXT,..); 

с другими свойствами аналогично.

 
Sergey Kolemanov:

Создавать текстовую метку нужно один раз, желательно в OnInit() (зависит от задачи), если нужно менять её текст в ходе работы программы то просто используем свойство

с другими свойствами аналогично.

все бы ничего, но, как изменить объекту свойства Time? Через ObjectSet... OBJPROP_TIME... игнорирует, другие ObjectSet не подходят, выдает ошибку.

 
ВСЕ! разобрался))) Просто указал другое свойство - OBJPROP_TIME1
Причина обращения: