我想用脚本创建一个按钮数组。这包括设置大小和位置,并分配一个mouseUp hander去吧。
mouseUp处理程序应为
on mouseUp
go to card "aName"
end mouseUp
名称列表位于文本变量tCardNames中。每行都有一个卡片名称。
答案 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