Русский

Справочник MQL4 Графические объекты ObjectDelete

ObjectDelete

Удаляет объект с указанным именем на указанном графике. Существует два варианта функции:

bool  ObjectDelete(
   long     chart_id,     // идентификатор графика
   string   object_name   // имя объекта
   );

Удаляет объект с указанным именем:

bool  ObjectDelete(
   string   object_name   // имя объекта
   );

Параметры

chart_id

[in]  Идентификатор графика.

object_name

[in]  Имя удаляемого объекта.

Возвращаемое значение

Возвращает true при успешном завершении операции удаления, в противном случае возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

При использовании варианта функции без указания идентификатора графика подразумевается работа с собственным графиком и осуществляется прямой доступ к нему. В этом случае возвращаемое значение означает именно результат выполнения функции.

Если же при вызове указывается идентификатор графика, и указанный идентификатор принадлежит чужому графику, то возвращаемое значение сообщает только об успешности постановки команды в очередь чужого графика. В этом случае используется асинхронный вызов – это означает, что функция не дожидается выполнения команды, успешно поставленной в очередь чужого графика, а сразу же возвращает управление.

Для проверки результата выполнения на чужом графике можно использовать функцию, запрашивающую указанное свойство объекта. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд чужого графика и дожидаются результата выполнения, то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   long current_chart_id=ChartID();
//--- создаем несколько объектов типа label
   for(i=0; i<300; i+=10)
     {
      string obj_name="label_object"+IntegerToString(i);
      //--- создаем объект
      if(ObjectCreate(obj_name,OBJ_LABEL,0,0,0))
        {
         PrintFormat("Object %s created.",obj_name);
         //--- устанавливаем цвет
         ObjectSetInteger(current_chart_id,obj_name,OBJPROP_COLOR,MathRand());
         //--- устанавливаем текст
         ObjectSetString(current_chart_id,obj_name,OBJPROP_TEXT,StringFormat("Simple Label at y= %d",i));
         //-- устанавливаем координаты
         ObjectSet(obj_name,OBJPROP_XDISTANCE,i);
         ObjectSet(obj_name,OBJPROP_YDISTANCE,i);
         //-- перерисовываем график
         ChartRedraw(current_chart_id);
         Sleep(10);
        }
      else
        {
         Print("Ошибка создания объекта: код ошибки #",GetLastError());
         return(0);
        }
     }
//--- пауза в 3 секунды
   Sleep(3000);
//--- удаление всех созданных объектов
   int obj_total=ObjectsTotal();
   PrintFormat("Всего %d объектов",obj_total);
   for(i=obj_total-1;i>=0;i--)
     {
      string name=ObjectName(i);
      PrintFormat("Объект %d: %s",i,name);
      ObjectDelete(name);
     }
   return(0);
  }