Forum: wxRuby Problem with ListCtrl Width

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Michael S. (Guest)
on 2009-03-23 19:45
I'm still learning wxWidgets, so this is probably basic.

I have some data that I'm trying to display in a wxListCtrl. The
ListCtrl is in a Box Sizer that is stacked in a main box sizer. the list
control is the only control in the specific box sizer containing it.

The problem is that the sizer is squeezing the width of the list control
down to the point that only a column and a half are visible without
horizontal scrolling. The form is actually wide enough that it should be
able to display all the columns.

How do I tell the layout to expand the width of the wxListCtrl?

Here's my code for the ListCtrl:

   #Put the item list on the screen
   @itemSizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
   @itemList = Wx::ListCtrl.new(self, -1,
      Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
      Wx::LC_REPORT | Wx::LC_HRULES | Wx::LC_VRULES)
   row = 0
   @itemList.insert_column(0, "Date")
   @itemList.insert_column(1, "Start")
   @itemList.insert_column(2, "End")
   @itemList.insert_column(3, "Description")
   @itemList.insert_column(4, "Elapsed")
   @itemList.insert_column(5, "No Charge")
   @itemSizer.add(@itemList, 1, Wx::TOP | Wx::LEFT, 15)
   @mainSizer.add(@itemSizer, 1, Wx::ALIGN_LEFT | Wx::LEFT |Wx::BOTTOM,
15)


Thanks in advance
---Michael
Christian S. (Guest)
on 2009-03-23 22:19
Hi Michael,

my advice would be:

1) go to this page: http://wxruby.rubyforge.org/doc/sizer.html#Sizer_add
and read it once or twice
2) go and fetch an evaluation copy of DialogBlocks here:
http://www.anthemion.co.uk/dialogblocks/download.htm

DialogBlocks flattens your learning curve a lot if you're more of the
learning by doing type of guy...

And pay special attention to the Wx::EXPAND flag and the proportion
parameter ;-)

Christian.

Michael S. wrote:
> I'm still learning wxWidgets, so this is probably basic.
>
Alex F. (Guest)
on 2009-03-23 22:51
(Received via mailing list)
Michael S. wrote:
> The problem is that the sizer is squeezing the width of the list control
> down to the point that only a column and a half are visible without
> horizontal scrolling. The form is actually wide enough that it should be
> able to display all the columns.
>
> How do I tell the layout to expand the width of the wxListCtrl?
>

Hard to be certain without seeing the whole context, but I'd guess you
should be adding a Wx::GROW flag to the sizer#add calls. This tells the
Sizer to expand that item to fill all the space in the non-main sizer
direction. So, if the sizer's vertical, adding Wx::GROW (or Wx::EXPAND,
it's a synonym), the listctrl will fill all the horizontal space
available.

A few random hints:
> Here's my code for the ListCtrl:
>
>    #Put the item list on the screen
>    @itemSizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
>

@itemSizer = Wx::HBoxSizer.new

And, are you sure you need two sizers?
>    @itemList = Wx::ListCtrl.new(self, -1,
>       Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
>       Wx::LC_REPORT | Wx::LC_HRULES | Wx::LC_VRULES)
>

@itemList = Wx::ListCtrl.new(self,  :style =>
Wx::LC_REPORT|Wx::LC_HRULES|Wx::LC_VRULES)

alex
This topic is locked and can not be replied to.