Ошибка при изменении имени копированного (Ctrl) графического объекта! MQL4

 

Доброго времени суток, уважаемые форумчане и знатоки MQL в частности!
При создании граф объектов на графики я отслеживаю это событие в функции OnChartEvent() и меняю имя объекта на нужное мне при помощи:

//+------------------------------------------------------------------+
//| Смена имени граф объекта                                         |
//+------------------------------------------------------------------+
string ChangeNameGraphicObject(const string name)
{
   string new_name = StringConcatenate(_Period, "/", name, "/", prog_name);
   //---
   if (ObjectSetString(0, name, OBJPROP_NAME, 0, new_name)){
      return new_name;}
   //---
   Print("It wasn't succeeded to rename an object: \""+name+"\", error #", IntegerToString(GetLastError()),"!");
   return name;
}

Но при попытке сменить имя объекта созданного при помощи перетаскивания исходного объекта с зажатой клавишей Ctrl выдаёт ошибку ERR_INVALID_FUNCTION_PARAMETER_VALUE 4051 Недопустимое значение параметра функции! В чём косяк и как его обойти, не подскажите?
 
Вроде как раньше имя было нельзя менять. Надо создавать новый объект, копировать все свойства, потом старый удалять.
 
Dmitry Fedoseev:
Вроде как раньше имя было нельзя менять. Надо создавать новый объект, копировать все свойства, потом старый удалять.

В каком смысле? Имя меняется прекрасно, но только при создании объекта с панели граф. объектов! А при создании копии (перетаскивание объекта с зажатой Ctrl) почему-то не получается программно сменить имя копии! На другом форуме посоветовали отслеживать нажатие Ctrl, создание копии и отжатие Ctrl! И только потом переименовывать копию! Возможно при перемещении объекта его свойства блокируются для программного доступа!

 
Viktor Glovluk:

В каком смысле? Имя меняется прекрасно, но только при создании объекта с панели граф. объектов! А при создании копии (перетаскивание объекта с зажатой Ctrl) почему-то не получается программно сменить имя копии! На другом форуме посоветовали отслеживать нажатие Ctrl, создание копии и отжатие Ctrl! И только потом переименовывать копию! Возможно при перемещении объекта его свойства блокируются для программного доступа!

Копию нельзя создать, все имена объектов должны быть уникальными

 
Vitaly Muzichenko:

Копию нельзя создать, все имена объектов должны быть уникальными

Да Японский городовой! Что ж так мало народу знакомо с терминалом! Попробуйте перетащить выделенный объект, с зажатой Ctrl и получите копию объекта с УНИКАЛЬНЫМ именем и генерацию события CHARTEVENT_OBJECT_CREATE! Но... если при отслеживании этого события попробовать программно переименовать объект (копию) то ничего не выйдет!

 
Viktor Glovluk:

Да Японский городовой! Что ж так мало народу знакомо с терминалом! Попробуйте перетащить выделенный объект, с зажатой Ctrl и получите копию объекта с УНИКАЛЬНЫМ именем и генерацию события CHARTEVENT_OBJECT_CREATE! Но... если при отслеживании этого события попробовать программно переименовать объект (копию) то ничего не выйдет!

Конечно не выйдет.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибка при изменении имени копированного (Ctrl) графического объекта! MQL4

Dmitry Fedoseev, 2018.09.26 07:56

Вроде как раньше имя было нельзя менять. Надо создавать новый объект, копировать все свойства, потом старый удалять.

 
Viktor Glovluk:

Да Японский городовой! Что ж так мало народу знакомо с терминалом! Попробуйте перетащить выделенный объект, с зажатой Ctrl и получите копию объекта с УНИКАЛЬНЫМ именем и генерацию события CHARTEVENT_OBJECT_CREATE! Но... если при отслеживании этого события попробовать программно переименовать объект (копию) то ничего не выйдет!

Пока что свое незнакомство с терминалом вы демонстрируете, притом дремучее и непрошибаемое.

 
Viktor Glovluk:

В каком смысле? Имя меняется прекрасно, но только при создании объекта с панели граф. объектов! А при создании копии (перетаскивание объекта с зажатой Ctrl) почему-то не получается программно сменить имя копии! На другом форуме посоветовали отслеживать нажатие Ctrl, создание копии и отжатие Ctrl! И только потом переименовывать копию! Возможно при перемещении объекта его свойства блокируются для программного доступа!

Батенька, божий дар с яичницей перепутали?

 
Dmitry Fedoseev:

Батенька, божий дар с яичницей перепутали?

Ну началось!

Я прошу прощения если кого-то обидел или задел! Признаю, многого не знаю, поэтому и обращаюсь сюда! Может знатоки терминала подскажут невеже?

 
Viktor Glovluk:

 На другом форуме посоветовали отслеживать нажатие Ctrl, создание копии и отжатие Ctrl! И только потом переименовывать копию! Возможно при перемещении объекта его свойства блокируются для программного доступа!

Это действительно так. Перемещаемый объект нельзя ни удалить, ни поменять ему свойства. Он блокируется на время перемещения.

 
Vitaly Muzichenko:

Конечно не выйдет.


Оказывается теперь можно переименовывать объекты. ObjectSetString(0,"zzz", OBJPROP_NAME,"zzzz"); 

Причина обращения: