如何将视图转换为红色的窗格或面板
How to Convert a view into a Pane or Panel in Red
所以我有一个当前正在运行并且看起来像我想要的视图。我想做的是将它包含的内容包装在一个变量中,并将其放在一个选项卡面板中。为此,我相信我需要将其转换为面板或类似面板。但我不太确定如何。
这是风景,
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,因此也非常感谢有关语法和编码风格的提示。
更新:这是我想将它们结合起来的方式:
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 永远不会显示。
如果我要猜测你的意图,我认为你真正的问题是:
如何将 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
的内容,您会发现它们在概念上是相同的。也就是说,用 make
.
创建的 object!
如果您这样做,最有用的事情之一是 /pane
和 /parent
来上下移动层次结构
进一步考虑
视图不是表面上显示的 "thing"。它可能指的是 VID dialect(你在 [blocks] 中的内容),或 view
function 用于在视图引擎中显示内容。实际的东西是 face!
个对象,用 make
或 layout
函数手动创建。
我标注了-view-dialect-blk
,是用实景方言写的,概念上和实物是不一样的。如果你检查我用 ??
标记的所有内容,我想你会更接近于理解引擎盖下的一切工作原理;-)
阅读 rebol2 view concepts and the official documentation 直到 red 赶上它也很好。虽然略有不同,但概念是一样的
所以我有一个当前正在运行并且看起来像我想要的视图。我想做的是将它包含的内容包装在一个变量中,并将其放在一个选项卡面板中。为此,我相信我需要将其转换为面板或类似面板。但我不太确定如何。
这是风景,
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,因此也非常感谢有关语法和编码风格的提示。
更新:这是我想将它们结合起来的方式:
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 永远不会显示。
如果我要猜测你的意图,我认为你真正的问题是:
如何将 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
的内容,您会发现它们在概念上是相同的。也就是说,用 make
.
object!
如果您这样做,最有用的事情之一是 /pane
和 /parent
来上下移动层次结构
进一步考虑
视图不是表面上显示的 "thing"。它可能指的是 VID dialect(你在 [blocks] 中的内容),或 view
function 用于在视图引擎中显示内容。实际的东西是 face!
个对象,用 make
或 layout
函数手动创建。
我标注了-view-dialect-blk
,是用实景方言写的,概念上和实物是不一样的。如果你检查我用 ??
标记的所有内容,我想你会更接近于理解引擎盖下的一切工作原理;-)
阅读 rebol2 view concepts and the official documentation 直到 red 赶上它也很好。虽然略有不同,但概念是一样的