使用 REBOL/View 2.7.8 Core,我想通过自动为各种布局项分配单词来预先准备 View 布局,如下例所示。
代替

prepared-view: [across  
                cb1: check  
                label "Checkbox 1" 
                cb2: check 
                label "Checkbox 2" 
                cb3: check 
                label "Checkbox 3" 
                cb4: check 
                label "Checkbox 4" 
                ] 
    view layout prepared-view 

因此,我想要 cb1通过 cb5自动创建,例如:
prepared-view2: [ across ] 
    for i 1 4 1 [ 
        cbi: join "cb" i 
        cbi: join cbi ":" 
        cbi: join cbi " check" 
        append prepared-view2 to-block cbi 
        append prepared-view2 [ 
        label ] 
        append prepared-view2 to-string join "Checkbox " i  
        ] 
    view layout prepared-view2 

然而,虽然 difference prepared-view prepared-view2显示 没有正在解析的 block ( == [] )的差异,第二个脚本会导致错误:
    ** Script Error: cb1 word has no context 
    ** Where: forever 
    ** Near: new/var: bind to-word :var :var 

我花了几个小时试图理解为什么,我认为新词需要以某种方式绑定(bind)到特定的上下文,但我还没有找到任何解决问题的方法。

我需要做什么?

请您参考如下方法:

bind prepared-view2 'view   
view layout prepared-view2 

创建正确的绑定(bind)。

这是另一种动态创建布局的方法
>> l: [ across ] 
== [across] 
>> append l to-set-word 'check 
== [across check:] 
>> append l 'check 
== [across check: check] 
>> append l "test" 
== [across check: check "test"] 
>> view layout l 

然后您可以使用循环来创建不同的变量以添加到您的布局中。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!