我正在玩 Rebol,但不知道如何将用户的组件添加回我的布局。
我有一个布局,其中包含从图像 URL 获取的图像,链接到在线文章/视频。我想在线添加更多链接到其相应文章/视频的图像,从用户那里获取 2 个 url(一个用于图像,一个用于文章/视频)。
我是否使用列表,将两个链接添加到列表并使用 show 作为按钮事件再次调用视图?有没有办法在不刷新整个布局的情况下添加它?
您可以使用列表,但它是一个棘手的野兽。我将在此处包含一个示例,以便您评估它的工作方式以及它是否适合您。
使用列表,您可以定义布局,然后根据某些数据或其他数据动态修改布局。为了说明,这里有一些图标:
icons: [
http://reb4.me/r/html-document.png
http://reb4.me/r/pdf-document.png
http://reb4.me/r/excel-document.png
http://reb4.me/r/word-document.png
http://reb4.me/r/zip-document.png
]
列表样式由大小、布局和供应函数组成(我将在边缘进行说明):
view center-face layout [
across
lst: list 48x240 edge none [image 48x48] supply [
face/image: all [
img: pick icons count
load-image img
]
]
btn "Random" [
icons: random icons
show lst
]
]
底部包含一个按钮,用于修改我们的数据,然后仅重新显示列表。
大小是48x240
——列表垂直工作,调用供应函数(列表高度/迭代布局高度)次。我有五个图标,所以将图标高度乘以五。
这[image 48x48]
是我们的迭代布局。请注意,我们在这个例子中只定义了一张脸。与通用布局不同,列表布局是使用layout/tight
细化创建的 - 如果您想要交替间距,则需要具体。
这supply [...]
部分是我们的供应功能。这是将被创建和调用以更新列表的函数的简写。该功能是操作面的func [face count index][...]
位置;是列表中的位置;并且是迭代布局中的偏移量。face
count
index
face
记住迭代布局只创建一次是关键。随着计数的增加,您只是在更改该布局中面的属性。
您只需要show
列表,而不需要整个布局。
所以从这里,你可以看到数据源和显示之间的关系。