ボタンを使ったタスク - ページ 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が押された場合、インデックス9でループが切れるため、インデックス10は押されないのでは...と思っています。