Задача с кнопками ! - страница 8

 
Тоже вариант. Только создавать на каждом тике их не нужно.
 
static string name=NULL;
for(int i=0;i<10;i++)
  {
   bool But=ObjectGetInteger(0,(string)i,OBJPROP_STATE);
   if(but && name!=(string)i)
     {
      ObjectSetInteger(0,name,OBJPROP_STATE,false);
      name=(string)i;
     }
  }
Если имена кнопок не цифры, тогда названия пихаем в массив.
 
Rorschach:
Если имена кнопок не цифры, тогда названия пихаем в массив.
предыдущая кнопка остается нажатой до следующего вызова цикла ...
 

не знаю на сколько такой подход правильный но так проблема решена

static string name=NULL;
for(int i=0;i<10;i++)
  {
   bool But=ObjectGetInteger(0,(string)i,OBJPROP_STATE);
   if(but && name!=(string)i)
     {
      ObjectSetInteger(0,name,OBJPROP_STATE,false);
      name=(string)i;
      i=0;
      }
  }
 
static string name=NULL;
for(int i=0;i<10;i++)
  {
   bool But=ObjectGetInteger(0,(string)i,OBJPROP_STATE);
   if(But && name!=(string)i)
     {
      ObjectSetInteger(0,name,OBJPROP_STATE,false);
      name=(string)i;
      ChartRedraw();
      break;
     }
  } 
Возможно так, не пробовал.
 
Rorschach:
Возможно так, не пробовал.

Я решил чуть по другому

static string name=NULL;
for(int i=0;i<10;i++)
  {
   bool But=ObjectGetInteger(0,(string)i,OBJPROP_STATE);
   if(but && name!=(string)i)
     {
      ObjectSetInteger(0,name,OBJPROP_STATE,false);
      name=(string)i;
      i=0;
      }
  }

Ваш последний вариант не проверял, но есть подозрение что если нажата кнопка с индексом 10 а потом с индексом 9 то с индексом 10 не отожмется так как цикл прерывается на 9 индексе ...