一个有按钮的任务! - 页 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处被打破......