实时代码:使用循环更改控件属性
Livecode: Change control properties using a loop
我有一张卡片,上面有大量控件: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 中执行此操作,或者是否有更好的控件命名约定以便我可以循环执行此操作?
您的解决方案非常接近。问题在于使用 [ ] 符号,这是为数组保留的。请改用连接运算符 &。请注意,如果需要,我还会用前导零填充 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
我回去研究了控件的 ID 号。虽然它们不是连续的,但它们以五个步骤出现(例如按钮 ID 1350、按钮 ID 1355 等)。然后我在一个循环中解决了每个控制组的变化,就像这样:
repeat x = 1350 to 1515 step 5
set backgroundColor of button id x to default
end repeat
因为每个循环会绘制不同的值(基于 ID 号),所以需要四个循环:一个用于更改按钮的颜色,一个用于更改菜单按钮上的标签,一个用于每个单选按钮尽管他们被分组了。虽然这种方法有效,但不如 Devin 的答案有效。
我有一张卡片,上面有大量控件: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 中执行此操作,或者是否有更好的控件命名约定以便我可以循环执行此操作?
您的解决方案非常接近。问题在于使用 [ ] 符号,这是为数组保留的。请改用连接运算符 &。请注意,如果需要,我还会用前导零填充 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
我回去研究了控件的 ID 号。虽然它们不是连续的,但它们以五个步骤出现(例如按钮 ID 1350、按钮 ID 1355 等)。然后我在一个循环中解决了每个控制组的变化,就像这样:
repeat x = 1350 to 1515 step 5
set backgroundColor of button id x to default
end repeat
因为每个循环会绘制不同的值(基于 ID 号),所以需要四个循环:一个用于更改按钮的颜色,一个用于更改菜单按钮上的标签,一个用于每个单选按钮尽管他们被分组了。虽然这种方法有效,但不如 Devin 的答案有效。