Я хотел бы динамически добавить кнопку в макет представления, при этом актер вызывает это добавление, принадлежащее кнопке, которая уже является частью макета.Добавления динамической компоновки в Rebol3
Я начал с этим:
REBOL [title: "Dynamic Button Addition"]
tilesize: 60x60
curtile: 1
stylize [
p: button [
facets: [init-size: tilesize max-size: tilesize]
actors: [
on-action: [
++ curtile
append tiles compose [ p (to-string curtile) ]
print ? tiles/options/content
v/redraw
]
]
]
]
v: [
tiles: hgroup [ p "1" ]
]
view v
... который не кажется, имеет значение tiles/options/content
изменения с каждым щелчком.
я могу заставить его изменить, если сделать эти изменения:
append tiledata compose [ p (to-string curtile) ]
и
tiledata: [ p "1" ]
v: [
tiles: hgroup tiledata
Однако, это не вызывает каких-либо изменений на экране. Если я заменяю последние четыре строки с этим:
v: view [
tiles: hgroup tiledata
]
... так что v
теперь вид, а не макет зрения, я получаю эту ошибку, когда я нажимаю:
** Script error: v has no value
** Where: actor all foreach do-actor unless do-face if actor all foreach do-actor if do-event do-event if do-event either -apply- wake-up loop -apply- wait forever try do-events if view do either either either -apply-
** Near: actor face :data
Это делает для меня смысл, потому что v
еще не определено, пока я не выйду из программы, IIUC.
Как, могу ли я внести изменения в v
до того, как программа закончится, но после того, как она была передана в view
?