如何使用脚本创建按钮数组?

时间:2013-06-15 10:43:25

标签: button livecode

我想用脚本创建一个按钮数组。这包括设置大小和位置,并分配一个mouseUp hander去吧。

mouseUp处理程序应为

on mouseUp
    go to card "aName"
end mouseUp

名称列表位于文本变量tCardNames中。每行都有一个卡片名称。

3 个答案:

答案 0 :(得分:1)

以下脚本完成工作

on createButtons
   repeat with i = 1 to the number of lines of tCardNames
      put line i of field "cardNames" into tName
      createNamedButton i, tName
   end repeat
end createButtons

on createNamedButton n, aName
   create button
   set the label of it to aName
   put "on mouseUp" & return into s
   put  "go to cd "  & quote & aName & quote& return after s
   put "end mouseUp" after s
   set the script of it to s
   put (10 + 30 * (n -1)) into tDistanceFromTop
   set the top of it to tDistanceFromTop
end createNamedButton

答案 1 :(得分:1)

该脚本应该可以正常工作,但由于所有按钮都具有基本相同的脚本,因此可以省略处理程序的脚本部分,并为其分配行为。这是何时使用行为的一个很好的例子。行为按钮脚本将是这样的:

on mouseUp
  go cd (the label of the target)
end mouseUp

创建该按钮,将其命名为“goCardBehavior”,将其隐藏,并在原始处理程序中添加此行而不是编写脚本的部分:

set the behavior of it to the long ID of button "goCardBehavior"

使用行为的一个好处是,当您需要稍后更改脚本时,您只需在一个地方执行此操作。

答案 2 :(得分:0)

这是一种略有不同的方法。每个表单的重复对于长列表而言比重复更有效,但在这种情况下可能没有明显的差异。

on createButtons
  repeat for each line tBtnName in tCardNames
    createNamedButton tBtnName
  end repeat
end createButtons

on createNamedButton pName
  create button pName
  set the script of btn pName to "on mouseUp" & cr & \
    "go cd " & quote & pName & quote & cr & \
    "end mouseUp"
  put the number of btn pName into tNum
  set the top of btn pName to (10 * 30 * (tNum - 1))
end createNamedButton