【问题标题】:Is there a way to center gui buttons and fields in Rebol?有没有办法在 Rebol 中居中 gui 按钮和字段?
【发布时间】:2013-01-29 07:45:31
【问题描述】:

花了几个小时试图弄清楚这一点,但仍然没有得到它。没有任何文档提到它。如果不手动重新排列所有内容,这是 rebol 无法做到的吗?

也许我只是期望过高?

编辑:好吧,我发现了一个技巧:缩进 num,然后在下一行缩进 -num。在这种语言的所有壮观特性中,为什么他们不能添加一个像 center 这样的简单命令?

【问题讨论】:

    标签: user-interface rebol rebol2


    【解决方案1】:

    您可以重复使用 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
    

    【讨论】:

    • 上面的内容实际上会给你错误......'LAY 在布局块中没有值。
    【解决方案2】:

    首先,VID 不是 Rebol,而是作者 Carl Sassenrath 编写的演示方言,用于演示如何在 Rebol 中使用接口方言。还有其他的,包括 RebGUI (http://www.dobeash.com/rebgui.html),尽管我怀疑那里没有办法将按钮居中,因为两位作者都不认为这很重要。

    您还可以使用 PAD 将光标靠近布局中心对齐。

    【讨论】:

    【解决方案3】:

    我们不能根据窗口本身来居中或对齐内容,因为控件没有任何方法可以引用它们的父面,直到父级调用了“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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2019-08-19
      • 1970-01-01
      • 2022-08-07
      • 2017-07-20
      • 1970-01-01
      • 2013-05-09
      相关资源
      最近更新 更多