Yukihiro Matsumoto wrote:

>Hi,
>
>In message "Problem with Ruby Tk"
>    on 02/01/28, Peter Hickman <peter / semantico.com> writes:
>|
>|I'm having some problems with the following code. When I click on either 
>|of the buttons on the scrollbar or move the thumb within the scrollbar 
>|the program crashes out on me. The error message that follows is from 
>|Windows 1.6.5-2 but the same error turns up on two seperate Linux 
>|installs. As the code is mostly cut and paste from the Pickaxe book I am 
>|somewhat baffled. BTW the Pickaxe code works fine but then it is not in 
>|a class.
>|
>|Any pointers?
>
>Since Ruby/Tk's "self swap" hack, you can't access instance variables
>from the block to the "new" method.
>
>|                scroll = TkScrollbar.new(root) {
>|                        command proc { |*args| @text.yview *args}
>|                        pack('side' => 'right', 'fill' => 'y')
>|                }
>
>"@text" in the block is referring the instance variable of the new
>TkScrollbar.  You can avoid this by
>
>!                text = @text = TkText.new(root) {
>|                        width 60
>|                        height 30
>|                }
>| 
>|                scroll = TkScrollbar.new(root) {
>!                        command proc { |*args| text.yview *args}
>|                        pack('side' => 'right', 'fill' => 'y')
>|                }
>
>
>							matz.
>
Brilliant, it works now.

Although it is not an entierly obvious problem or solution. Ah well.

Thanks again.