动态代码:使用循环

时间:2017-09-08 19:08:07

标签: loops variables livecode

我有一张卡上有大量控件:33个按钮,33个菜单和33个单选按钮对。每次使用控件时,控件的属性都会更改 - 每对中的一个单选按钮上的hilite被激活,菜单项出现在原始标签之外(为0),并且按钮会改变颜色默认。我想写一个循环,将所有控件重置为默认状态。按钮标记为RB01至RB33,菜单项标记为RM01至RM33,单选按钮对为RR01至RR33。此外,控件的ID号不是连续的。这是我到目前为止所做的:

    on mouseUp
       repeat with x = 1 to 33
          set the backgroundColor of button "RB[x]" to default
          set the Label of button "RM[x]" to 0
          set the highlite of of group "RR[x]" to FALSE
       end repeat
    end mouseUp

“RB [x]”的使用是这里的问题,尽管搜索我仍然无法找到任何好的解决方案。有没有办法在Livecode中执行此操作,或者控件是否有更好的命名约定,所以我可以在循环中执行此操作?

2 个答案:

答案 0 :(得分:0)

您的解决方案非常接近。问题在于使用[]表示法,它是为数组保留的。使用连接运算符&代替。请注意,如果需要,我也用前导零填充x。 ()强制在对象名称之前计算连接字符串。

on mouseUp
   repeat with x = 1 to 33
      if length(x) < 2 then put "0" before x
      set the backgroundColor of button ("RB" & x) to default
      set the Label of button ("RB" & x) to 0
      set the highlite of of group ("RB" & x) to FALSE
   end repeat
end mouseUp

答案 1 :(得分:0)

我回去研究了控件的id号。虽然它们不是连续的,但它们以五步为单位出现(例如按钮ID 1350,按钮ID 1355等)。那么我在循环中解决了每个控制组的变化,如下所示:

    repeat x = 1350 to  1515 step 5
       set backgroundColor of button id x to default
    end repeat

因为每个循环都会绘制不同的值(基于id号),所以需要四个循环:一个用于更改按钮的颜色,一个用于更改菜单按钮上的标签,另一个用于每个单选按钮,尽管他们被分组的事实。虽然这种方法有效,但它的效率不如德文的答案。