有没有办法在Rebol中心gui按钮和字段?

时间:2013-01-29 07:45:31

标签: user-interface rebol rebol2

花了好几个小时试图解决这个问题但仍然没有得到它。没有任何文件提及它的任何内容。如果没有手动重新安排原点的所有内容,这是rebol的事吗?

也许我只是期待太多了?

编辑:我发现了一个hack:缩进num,然后在下一行缩进-num。在这种语言的所有壮观功能中,为什么他们不能只添加一个简单的命令,如中心?

3 个答案:

答案 0 :(得分:5)

有一个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

答案 1 :(得分:3)

首先,VID不是Rebol,而是由作者Carl Sassenrath编写的演示方言,用于演示如何在Rebol中对接口进行说明。还有其他一些包括RebGUI(http://www.dobeash.com/rebgui.html),虽然我怀疑没有办法在那里设置按钮,因为两位作者都认为它很重要。

您也可以使用PAD将光标对准靠近布局的中心。

答案 2 :(得分:3)

我们不能根据窗口本身居中或对齐东西,因为控件在父节点已经'SHOW调用它之后'之前没有任何方式可以引用它们的父面。

在显示父级之前,不会设置face / parent-face。所以在正常的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