2

我想在 Rebol 3 按钮处理程序 (GUI) 中设置一个变量,并在窗口关闭后使用该值。如何获取视图块之外的值?这是一个示例代码:

view [
    v_username:  field
    button "Submit" on-action [
        username: get-face v_username 
        close-window face
    ]
]

probe username

无论 v_username 的内容如何,​​结果都是 ""。

是否必须将其“声明”为全局变量?我应该从视图的返回值中获取此值吗?

4

1 回答 1

2

被调用时的'on-action块被包装在一个function(Rebol 函数中,其中假定集合词对函数是本地的)。您有几个选项可以解决此问题:

  1. 使用对象将值存储在(set-paths are not bound within function):

    values: context [username: none]
    view [... on-action [values/username: get-face ...]]
    
  2. 用于'set设置单词。我发现这不太可靠,因为它不确定您正在设置的单词的上下文:

    view [... on-action [set 'username get-face ...]]
    
  3. 尽管也许最好的选择是记住您分配给样式的单词与您正在使用的上下文相关,因此:

    view [username-field: field ...]
    username: get-face username-field
    
于 2013-07-22T21:11:03.930 回答