【发布时间】:2013-01-29 07:45:31
【问题描述】:
花了几个小时试图弄清楚这一点,但仍然没有得到它。没有任何文档提到它。如果不手动重新排列所有内容,这是 rebol 无法做到的吗?
也许我只是期望过高?
编辑:好吧,我发现了一个技巧:缩进 num,然后在下一行缩进 -num。在这种语言的所有壮观特性中,为什么他们不能添加一个像 center 这样的简单命令?
【问题讨论】:
标签: user-interface rebol rebol2
花了几个小时试图弄清楚这一点,但仍然没有得到它。没有任何文档提到它。如果不手动重新排列所有内容,这是 rebol 无法做到的吗?
也许我只是期望过高?
编辑:好吧,我发现了一个技巧:缩进 num,然后在下一行缩进 -num。在这种语言的所有壮观特性中,为什么他们不能添加一个像 center 这样的简单命令?
【问题讨论】:
标签: user-interface rebol rebol2
您可以重复使用 CENTER-FACE 功能来对齐面,但不幸的是,根据我的经验,它的效果并不好。这是一个更简单的替换版本,应该可以解决问题:
center-face: func [face [object!] parent [object!]][
face/offset: parent/size - face/size / 2
]
这是一个用法示例:
lay: layout [
size 300x300
b: button "Hello World"
]
center-face b lay
view lay
【讨论】:
首先,VID 不是 Rebol,而是作者 Carl Sassenrath 编写的演示方言,用于演示如何在 Rebol 中使用接口方言。还有其他的,包括 RebGUI (http://www.dobeash.com/rebgui.html),尽管我怀疑那里没有办法将按钮居中,因为两位作者都不认为这很重要。
您还可以使用 PAD 将光标靠近布局中心对齐。
【讨论】:
我们不能根据窗口本身来居中或对齐内容,因为控件没有任何方法可以引用它们的父面,直到父级调用了“SHOW”之后。
face/parent-face 在 parent 显示之前不会设置。因此,在普通 VID 中,您需要在初始布局和视图完成后调整 gui。
这里有一个小脚本,它展示了如何在任何人脸至少显示一次后居中。
view/new 用于延迟事件处理,以便修改布局。
rebol []
center: func [face][
face/offset/x: (face/parent-face/size/x / 2) - (face/size/x / 2)
show face
]
view/new layout [
across
t: h1 "This is a centered title!"
return
button "1"
button "2"
button "3"
button "4"
]
center t
do-events
【讨论】: