【问题标题】:Remove button faces删除按钮面
【发布时间】:2020-06-18 07:39:52
【问题描述】:

大家好。
我想知道如何用一个按钮去除两个按钮面。

我试过这个:

gui: [
  en: button "English" remove [en es]
  es: button "Spanih" remove [en es]
]

而且我必须添加新按钮。

【问题讨论】:

  • 1) 你必须使用view 函数来显示一个gui。 2) 按钮动作必须包含在一个块中。
  • 您好 Civan,通常您应该将最佳答案标记为“已回答”(绿色复选标记),而不是编辑您的问题标题以说明问题已解决。您也可以通过对您认为有帮助的任何答案进行投票来表示感谢。
  • 好的,我知道了。

标签: rebol red


【解决方案1】:

View engine 将 GUI 界面建模为对象树;该树中的每个节点称为一个面,该面的每个字段称为一个面。

parentpane 两个面分别将面与其父节点和子节点互连。因此,根据该理论,删除按钮就是从其父窗格中删除 button 面:

view [button "Poof!" [probe select take face/parent/pane 'text]]

然而,这是一种有限的方法。移除的面会从视图树中分离出来,并且不能再使用,除非您将具有相同规范的 face! 对象重新附加回窗格。简单地禁用按钮或暂时使其不可见可能更有用。 enabled?visible? 方面可以做到这一点:

view [
    title "Face flags example"
    below
    toggle "Toggle" [foo/enabled?: not foo/enabled?]
    foo: button "Switch" disabled [bar/visible?: not bar/visible?]
    bar: base red
]

您可以根据手头的任务调整这种方法。据我了解,您希望提供相互排斥的本地化选项; drop-list 可能非常适合:

view [drop-list data ["en" "es"]]

【讨论】:

  • 哇!一个非常解释性的答案。谢谢。
【解决方案2】:

你可以试试这个:

Red [Needs: View]
view [
    en: button "English" [remove find face/parent/pane en]
    es: button "Spanish" [
        remove find face/parent/pane en
        remove find face/parent/pane es
    ]
]

【讨论】:

  • 感谢您的快速答复。这段代码太好了。好吧,它不是用 Rebol 运行的,而是用 Red 运行的。
  • 嗨@CivanTunç,欢迎来到 StackOverflow!如果您对 Maciek 的回答感到满意,请标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2018-10-25
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
相关资源
最近更新 更多