Hello all,
I am trying to get a new grid control working (similar to a TreeView
without the tree) and my most recent problem is to get the Scrollbar to
respond to the changes it initiates in the grid. I’ve tried a few
things, but nothing on the web seems to deal with getting a Scrollbar to
work with anything that isn’t already inside Tk and has the correct
hooks. The closest I’ve come is some allusions at
The code I was trying includes this just after the widgets are setup:
@v_scroll.command proc{|*args| self.yview(*args)}
self.yscrollcommand proc{|*args| @v_scroll.set(*args)}
self.yscrollcommand proc{|*args|
@v_scroll.set(@y_scroll_start_fraction, @y_scroll_end_fraction)}
The scrollbar responds since I defined yview to send to internal
yviewMoveTo and yviewScroll methods (as I found somewhere else): the
move commands are sent to the correct methods. However once the user
releases the scrollbar, the scrollbar always returns to the original
position (top).
I tried defining it the same as in existing widgets, eg:
def yscrollcommand block
configure_cmd ‘yscrollcommand’, block
self
end
But even if I include TkConfigMethod and TkComm in the class, it can’t
figure out what TkConfigMethod’s path is (and I certainly don’t know).
I also tried some other things like using the standard *args version
above and have this definition of yscrollcommand:
block.call(@y_scroll_start_fraction, @y_scroll_end_fraction)
But apparently I am missing some deeper understanding of what the
process is here… Since yscrollcommand seems to only be called at the
start, I figure the contents have to be linking a block to something
else, but the definitions in tk.rb didn’t clear anything up for me. It
seems like a lot of code acrobatics behind configure_cmd() - do I need
that?
Has anyone been successful at this or can tell me what I should be
trying instead?
Thanks!
-Chris