[wxruby-users] ListCtrl.get_selections broken?

Christian Schmidt lists at ruby-forum.com
Sun Mar 8 09:09:25 EDT 2009


Alex Fenton wrote:

> Note - this can be written ListCtrl.new(self, :style => LC_REPORT). You
> almost never need to use the clumsy 'DEFAULT_POSITION', 'DEFAULT_SIZE'
> etc. Use named arguments and these will be taken care of.

This is great! I've always been annoyed by that, since I practically 
never need to explicitly set those using sizer based layout.

>>     li = ListItem.new()
>>     li.set_state 
>>
>>     li.set_text '123'
>>     @list.insert_item(li)
>>     li.set_text '234'
>>     @list.insert_item(li)
>>   

I didn't use the ListItem helper-class in the original program. Just 
wanted to make it easier for you to reproduce the problem by selecting 
the items at startup. I was using @list.insert_item(pos, 'item') and 
@list.set_item(pos, col, 'property') originally.

> Your problem is here, I think. Each ListItem object represents a unique
> object in the list. The row it's in is identified by an attribute 'id'.
> However, you're adding the same object multiple times. Do it like this
> instead, creating a new ListItem for each:
> 
> li = Wx::ListItem.new
> li.state = LIST_STATE_SELECTED
> li.id = 0 # For row 0
> li.text = '123'
> @list.insert_item li

I've been playing around with this now. I thought, it might also be a 
problem of references getting lost somewhere. So I modified it as 
follows:

    @li1 = ListItem.new()
    @li1.set_state LIST_STATE_SELECTED
    @li1.set_text '123'
    @li1.id = 0
    @list.insert_item(@li1)

    @li2 = ListItem.new()
    @li2.set_state LIST_STATE_SELECTED
    @li2.id = 1
    @li2.set_text '234'
    @list.insert_item(@li2)

    ...

But still no luck: get_selections.size == 0!

Christian.


-- 
Posted via http://www.ruby-forum.com/.


More information about the wxruby-users mailing list