Un compito con i pulsanti! - pagina 8

 
Anche un'opzione. Solo che non c'è bisogno di crearli ad ogni spunta.
 
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;
     }
  }
Se i nomi dei pulsanti non sono numeri, allora mettete i nomi in un array.
 
Rorschach:
Se i nomi dei pulsanti non sono numeri, allora i nomi saranno memorizzati in un array.
Il pulsante precedente rimane premuto fino alla chiamata del ciclo successivo ...
 

Non so se questo è l'approccio giusto, ma risolve il problema

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;
     }
  } 
Forse sì, non l'ho provato.
 
Rorschach:
Forse sì, non l'ho provato.

Ho deciso un po' diversamente

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;
      }
  }

Non ho controllato la tua ultima variante, ma ho il sospetto che se l'indice 10 è premuto e poi l'indice 9 è premuto, allora l'indice 10 non sarà premuto perché il ciclo è rotto all'indice 9...

Motivazione: