Thanks again, Anton ~

for taking the time to explain. Just what I needed - that
part is now understood. 

Wouldn't it be neat if context had a /deep refinement?

Thanks,
Kai






On Sat, 1 Sep 2007 22:16:40 +1000, Anton Rolls wrote:
>
> Hi Kai,
>
> A deeper understanding of CONTEXT is required. CONTEXT just MAKEs an=
 object!
> When MAKEing an object, the spec block is first scanned for set-words, but=
 only in the top level.
> Those set-words that were found in the scan are added to the new object.=
 eg:
>
> probe context [a: none do [b: none]]
>
> Only A is added to the new object because B: is in a sub-block.
>
> In your example, when building CTX, only CHANGE-TEXT: and FORM2: were=
 found in the top level,
> which you can verify:
>
> probe first ctx
>
> If you want a word added to a context which is only set in a sub-block,=
 then set it to none in
> the top-level first. eg:
>
> context [
> f2text: none
> change-text: ...
> ...
> ]
>
> And that explains why F2TEXT was available to SHOW-FORM2; F2TEXT was not=
 bound to CTX, so when
> you set it, it was set global.
>
> Anton.
>
>> Why does Rebol not complain about
>> 'f2text not having a value in 'show-form2????
>>
>> It forces me to use the context to talk to the layout and the=
 'change-text function which makes
>> good sense to me.
>>
>> How come it "sees" the "sub-part" 'f2text when it cannot "see" its=
 parent?
>>
>> Would one of the gurus please shed some light on this for me?
>>
>> As always, thanks a lot!
>> Kai
>>
>>
>> rebol[]
>>
>> ;------------------------------------------- show-form2: does [ unview=
 view/new ctx/form2 ;
>> makes good sense ctx/change-text     makes good sense set-face f2text=
 "GREEN"   ?????? ]
>>
>> ;------------------------------------------- form1:  center-face layout [=
 btn "Show form 2" [
>> show-form2 ] ]
>>
>> ;------------------------------------------- ctx: context [
>> change-text: does [ set-face f2text "BLUE" ] ; form2: center-face layout=
 [ f2text: text "RED" ]
>> ]
>>
>> ;------------------------------------------- view form1


-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to