当我点击按钮刷新时,我收到错误
v: [field1 "to refresh" field2 "to refresh"
button "refresh" [show v]]
view v
如何刷新v?
更新:我没有错误,但没有刷新:
test: [
["a1" "b1"]
["a2" "b2"]
]
i: 1
v: layout compose [
field data test/:i/1 field data test/:i/2 button "refresh" [i: i + 1 show v]
]
view v
答案 0 :(得分:1)
显示需要一张脸,而不是一块。 你可能想要的东西
v: layout [
f1: field "to refresh"
f2: field "to refresh"
button "refresh" [f1/text: f2/text show v ]
]
要查看更改,您应在第二个输入字段中键入内容,然后再单击按钮。
要使用某些(有用的)使用您的更新,您可以使用
i: 1
sw: true
v: layout compose [
f1: field data test/:i/1
f2: field data test/:i/2
button "refresh" [
i: pick [1 2] sw: not sw
f1/text: test/:i/1
f2/text: test/:i/2
show v
]
]
show 不会再次加载面部定义块,但red-gui-system docs说
“红色/视图会在其属性发生变化时实时更新面部和图形对象。这是默认行为,但是当需要完全控制屏幕更新时,可以关闭它。这可以通过以下方式实现:< / p>
system/view/auto-sync?: off
当关闭自动同步时,您需要在面上使用show function来更新屏幕上的图形对象。“
我猜你可以通过销毁旧的face对象并使用规范块构建一个新的东西来获得类似于你的意图。
test: [
["a1" "b1"]
["a2" "b2"]
]
i: 1
sw: true
vvw: layout v: [
field data test/:i/1
field data test/:i/2
button "refresh" [
i: pick [1 2] sw: not sw
unview vvw
view v
]
]
view vvw
答案 1 :(得分:0)
不确定您的意思&#34;刷新&#34;,但Red的被动,您不需要明确告诉它更新。
如果您只想更新文本数据(增加其值) - 这是一个简短的工作示例:
view [f: field "42" button "increment" [f/data: f/data + 1]]
也就是说,f
已分配给刚刚创建的field
。按下按钮 - 它通过访问其data
成员来接收新值。