Как убрать пустоту?

 

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


 

Кнопка - это графический объект, так? У объекта есть координаты. Жмяк, и переписываем новые координаты нужным объектам.

Сам жмяк отлавливаем в OnChartEvent.

Что ещё сказать... вроде всё.
 
Aleksei Stepanenko #:

Кнопка - это графический объект, так? У объекта есть координаты. Жмяк, и переписываем новые координаты нужным объектам.

Сам жмяк отлавливаем в OnChartEvent.

Что ещё сказать... вроде всё.

спасибо что ответили, а подскажите как сделать так что сначало будет проверка есть ли кнопка и ексли её нету тогда меняются данные?

 
vebster005 #:

 как сделать так что сначало будет проверка есть ли кнопка и ексли её нету тогда меняются данные?

ObjectFind
 
Sergey Gridnev #:
ObjectFind

Спасибо. так... тут понятно, теперь такой вопрос, как мне задать такой параметр, что если кнопка 2 и 4 отсутствует(это я буду проверять ObjectFind тут понятно), и что нужно кнопку 1, 3 и 5 нужно переместить на нужные данные!!!
аааааааааааа сложно даже написать свой вопрос, я имею ввиду как учесть все данные, тобишь если у меня кнопок например 20, не ко всем же подбирать

 
if(!ObjectFind(ChartID(),"button2") && !ObjectFind(ChartID(),"button4"))
   {
   int index=0;
   for(int i=1; i<=20; i++)
      {
      if(ObjectFind(ChartID(),"button"+(string)i))
         {
         index++;
         ObjectSetInteger(ChartID(),"button"+(string)i,OBJPROP_XDISTANCE,100);
         ObjectSetInteger(ChartID(),"button"+(string)i,OBJPROP_YDISTANCE,index*200);
         }
      }
   }

Но по-правильному, не нужно постоянно искать объект, есть или нет. Нужно отловить событие нажатия кнопки и один раз сделать все необходимые действия. И не нагружать систему постоянными поисками:

1. Приходит событие нажатия кнопки.

2. Удаляем нужную, находим оставшиеся, меняем их координаты.

3. Ждём нового нажатия и ничего не делаем.

 
Aleksei Stepanenko #:

Но по-правильному, не нужно постоянно искать объект, есть или нет. Нужно отловить событие нажатия кнопки и один раз сделать все необходимые действия. И не нагружать систему постоянными поисками:

1. Приходит событие нажатия кнопки.

2. Удаляем нужную, находим оставшиеся, меняем их координаты.

3. Ждём нового нажатия и ничего не делаем.

Спасибо большое. У меня очень много где используется проверка есть ли объект или нет. Не знал что нагружает систему сильно. Спасибо

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