Eine Aufgabe mit Tasten! - Seite 8

 
Auch eine Option. Nur muss man sie nicht bei jedem Tick erstellen.
 
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;
     }
  }
Wenn die Namen der Schaltflächen keine Nummern sind, dann fügen Sie die Namen in ein Array ein.
 
Rorschach:
Wenn die Namen der Schaltflächen keine Nummern sind, werden die Namen in einem Array gespeichert.
Die vorherige Taste bleibt bis zum nächsten Zyklusaufruf gedrückt ...
 

Ich weiß nicht, ob das der richtige Ansatz ist, aber er löst das Problem.

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;
     }
  } 
Vielleicht, ich habe es nicht ausprobiert.
 
Rorschach:
Vielleicht, ich habe es nicht ausprobiert.

Ich habe ein wenig anders entschieden

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

Ich habe Ihre letzte Variante nicht überprüft, aber ich vermute, dass, wenn die Taste mit dem Index 10 gedrückt wird und dann der Index 9 gedrückt wird, dann wird der Index 10 nicht gedrückt, weil die Schleife bei Index 9 unterbrochen wird...