1

所以我有一个当前正在工作并且看起来像我想要的视图。我想做的是将它包含的内容包装在一个变量中并将其放在选项卡面板中。为此,我相信我需要将其转换为面板或类似的东西。但我不确定如何。

这里的景色,

        Red [ Title: "Editor"  needs: 'view]

        s: 110x25
        ts: 50x50

        view [size 800x800 title "Red Edit"

        drop-down s "Debug" data ["Debug" "Release"] 
        drop-down s "Windows" data ["Windows" "MacOSX" "Linux" "BSD" ] 
        button s "Compile" []  across
        button s  "Run" []


         return
            a: area 700x700 black
        ]

这是选项卡面板

       view [backdrop brown
            title "Red Edit"
            tab-panel 820x820 [
                  "File1" []

                              ]
        ]

它将进入名为“File1”的第一个选项卡内。到目前为止,我的尝试给了我一个编译器错误,告诉我我试图创建的面板没有价值。

此外,由于我仍在学习红色,因此也将不胜感激有关语法和编码风格的提示。

更新:这是我想将它们组合起来的方式:

    Red [ Title: "Editor"  needs: 'view]
    s: 110x25
    ts: 50x50

    p: [size 800x800 title "Red Edit"

    drop-down s "Debug" data ["Debug" "Release"] 
    drop-down s "Windows" data ["Windows" "MacOSX" "Linux" "BSD" ] 
    button s "Compile" []  across
    button s  "Run" []


     return
        a: area 700x700 black
    ]



    view [backdrop brown
    title "Red Edit"

    tab-panel 820x820 [
        "File1" [text "hello" p]

                                  ]
    ]

如果我这样做, p 永远不会显示。

4

1 回答 1

1

如果我要猜测你的意图,我认为你真正的问题是:

我怎样才能将 GUI 的东西组合和粘合在一起?

有几种方法可以做到这一点,但你应该问的第一件事是:

我需要吗?

正如@dockimbel 所说,如果它不是动态的,您可以简单地将它tab-panel放在方言块内的单词之后[],这是惯用的:

tab-panel [<rest of gui here>]

方法一:用块组合成方言

这是下一个最简单的方法,使用您的代码:

Red [ Title: "Editor"  needs: 'view]

s: 80x25
ts: 50x50

cnt-object: layout cnt-view-dialect-blk: [
    ;size 80x80 title "Red Edit"
    drop-down s "Debug" data ["Debug" "Release"] 
    drop-down s "Windows" data ["Windows" "MacOSX" "Linux" "BSD" ] 
    button s "Compile" []

    ;across
    button s  "Run" []

    return
    a: area 350x150 black
]

; view cnt-object

pnl-object: layout pnl-view-dialect-blk: compose/deep [
    title "Red Edit"
    tab-panel 400x200 [
        "File1" [(cnt-view-dialect-blk)]
    ]
]

view pnl-object

方法二:使用视图face! 对象

这需要更陡峭的学习曲线,但是当你学习它时,一切都会变得更容易,而且可能也更有效率!如果您阅读以下文档face!

button: make face! [type: 'button]

然后回头看看我-object在上面的代码中命名的东西,你会意识到它们在概念上是一样的。也就是说,一个object!make.

如果你这样做,最有用的事情之一就是/pane上下/parent移动层次结构

进一步的考虑

视图不是表面上的“事物”。它可能指的是 VID方言(您在[blocks]中拥有的内容),或用于在视图引擎中显示内容的view 函数。实际的东西是face!对象,由函数手动创建make或由layout函数创建。

-view-dialect-blk用实际视图方言写了标签,这在概念上与实际对象不同。如果您检查我标记的所有内容??,我认为您会更接近了解一切如何在幕后工作;-)

阅读rebol2 视图概念官方文档也很好,直到 red 赶上它。虽然略有不同,但概念是相同的

于 2017-04-03T05:08:38.553 回答