我的程序很容易解决问题。我的程序工作率为99%(还没有尝试打破它,哈哈)我正在格式化以扩展到多个平台等。我的程序中有一小部分特别难以定位,但是,因为我有多个对象并非单独始终可见。我为我想做的事写了一些示例伪代码,但我无法找到很多有用的语法来帮助我实现伪代码。伪代码如下(道歉,因为我的伪代码可能不正式):
FOR each object
IF object required then
Add object to group
ELSE
Hide object
END IF
END FOR
CENTER group
在此之后,我应该为我的程序提供一个完整的最小可行产品,所以非常感谢帮助。干杯!
答案 0 :(得分:0)
使用show
命令显示对象,使用hide
命令隐藏对象。如果脚本位于群组内,请不要忘记引用您的群组:control x of group y
或control x of me
。
的示例:
show field 1 of group "Purple"
hide button "Click Me" of me
答案 1 :(得分:0)
以下是您的伪代码的一些代码。 (请注意,我正在抓住你想要做的事情的细微差别。)
repeat with x = 1 to the number of buttons in group "foo"
put the long id of button x of group "foo" into tBtn
if tObjectIsNeeded then
show tBtn
else
hide tBtn
end if
end repeat
# this centers the group horizontally and vertically
set the loc of group "foo" to the loc of this card
您可以使用copy
命令将对象添加到组:
copy button "bar" into group "foo"
您可以使用delete
命令从卡中删除控件:
delete button "bar" from group "foo"
如果您只想水平对齐组,请修改其location
属性。 location
属性是以逗号分隔的两个整数列表,第一个给出卡片左边缘的像素数,第二个给出卡片顶部的像素数。它看起来像这样:
set the itemDelimiter to comma # comma is default, so this line might not be needed
put item 1 of the loc of this card into tXloc
put item 2 of the loc of group "foo" into tYloc
set the loc of group "foo" to tXloc,tYloc
答案 2 :(得分:0)
组的矩形可以与它包含的控件的大小不同,所以我不打扰添加或删除控件,我只是调整组本身以适应可见的组。然后根据需要将小组居中。
如果这是您正在开发的刽子手游戏的一部分,则第一个可见字段的左侧将成为该组的左侧边缘,而最后一个可见字段的右侧将成为该组的右侧。顶部和底部保持不变。
尝试使用“firstfield”和“lastfield”的正确字段名称:
put the rect of grp "foo" into tRect
put the left of field "firstfield" into item 1 of tRect
put the right of field "lastField" into item 3 of tRect
set the rect of grp "foo" to tRect -- resizes group to fit visible controls
-- now center the group along the horizontal axis:
set the loc of grp "foo" to (item 1 of the loc of this cd),item 2 of the loc of grp "foo"