Une tâche avec des boutons ! - page 8

 
C'est aussi une option. Seulement, vous n'avez pas besoin de les créer à chaque tique.
 
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;
     }
  }
Si les noms des boutons ne sont pas des numéros, mettez-les dans un tableau.
 
Rorschach:
Si les noms des boutons ne sont pas des numéros, ils seront stockés dans un tableau.
Le bouton précédent reste enfoncé jusqu'à l'appel du cycle suivant ...
 

Je ne sais pas si c'est la bonne approche, mais cela résout le problème.

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;
     }
  } 
Peut-être, je ne l'ai pas essayé.
 
Rorschach:
Peut-être, je ne l'ai pas essayé.

J'ai décidé un peu différemment

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

Je n'ai pas vérifié votre dernière variante, mais je soupçonne que si le bouton index 10 est pressé et qu'ensuite l'index 9 est pressé, alors l'index 10 ne sera pas pressé car la boucle est interrompue à l'index 9...

Raison: