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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Viktor Glovluk
2286
Viktor Glovluk  

Доброго времени суток, уважаемые форумчане и знатоки 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
57641
Dmitry Fedoseev  
Вроде как раньше имя было нельзя менять. Надо создавать новый объект, копировать все свойства, потом старый удалять.
Viktor Glovluk
2286
Viktor Glovluk  
Dmitry Fedoseev:
Вроде как раньше имя было нельзя менять. Надо создавать новый объект, копировать все свойства, потом старый удалять.

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

Vitaly Muzichenko
14106
Vitaly Muzichenko  
Viktor Glovluk:

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

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

Viktor Glovluk
2286
Viktor Glovluk  
Vitaly Muzichenko:

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

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

Vitaly Muzichenko
14106
Vitaly Muzichenko  
Viktor Glovluk:

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

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

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

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

Dmitry Fedoseev, 2018.09.26 07:56

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

Dmitry Fedoseev
57641
Dmitry Fedoseev  
Viktor Glovluk:

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

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

Dmitry Fedoseev
57641
Dmitry Fedoseev  
Viktor Glovluk:

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

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

Viktor Glovluk
2286
Viktor Glovluk  
Dmitry Fedoseev:

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

Ну началось!

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

Slava
Модератор
13476
Slava  
Viktor Glovluk:

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

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

Dmitry Fedoseev
57641
Dmitry Fedoseev  
Vitaly Muzichenko:

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


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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий