On Sat, 24 Jan 2004 00:29:58 +0900
Lyle Johnson <lyle / users.sourceforge.net> wrote:

>      Yuri Leikind wrote:
>      
>      > Is there a way in Fox to add widgets after the widget hierarchy has been built and
>      > FXApp#run has started?
>      > 
>      > Say, I have an empty FXScrollWindow, and I want to add FXMatrix to it with
>      > lots of its own children, on some event (button click, etc).
>      > 
>      > So far, I have not found a way to see the widgets I've added.
>      
>      See this question from the FOX FAQ list:
>      
>      	http://www.fox-toolkit.org/faq.html#CREATELATER
>      
>      If you add widgets after the program's started, you'll need to call 
>      create() on them after adding them.


Yes, it does work. In some cases. But in other cases it doesn't. Please take a look at the example:


require "fox"
    class App < Fox::FXApp
  
        include Fox

        def initialize
            super("app")            
            window = FXMainWindow.new(self,"app", nil, nil, 0, 0, 500, 300)
            contents = FXVerticalFrame.new(window, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)

            grbox1 = FXGroupBox.new(contents, "Options", GROUPBOX_TITLE_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
            build(grbox1, false)
            
            grbox2 = FXGroupBox.new(contents, "Options", GROUPBOX_TITLE_LEFT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
            #build(grbox2, false)

            FXButton.new(contents, "Click me").connect(SEL_COMMAND) do
                build(grbox2, true)
            end
            create
            window.show
            run
        end   
        
        def build(parent, creat)
            scrollarea = FXScrollWindow.new(parent, VSCROLLER_ALWAYS|LAYOUT_FILL_X|LAYOUT_FILL_Y)
            
            scrollable = FXMatrix.new(scrollarea, 2, MATRIX_BY_COLUMNS|LAYOUT_FILL_X, DEFAULT_SPACING, 
                    DEFAULT_SPACING, DEFAULT_SPACING, DEFAULT_SPACING, 30, 30)        
        
        
            1.upto(10) do
                 FXLabel.new(scrollable, "some name", nil, LABEL_NORMAL)
                 FXCheckButton.new(scrollable, "yes", nil, 0, CHECKBUTTON_NORMAL|LAYOUT_SIDE_LEFT)
            end
            scrollarea.create if creat
        end
    end
App.new


We have 2 FXScrollWindow instances here, one of which is built before run , another - after. 
So that another FXScrollWindow is never seen. I don't see why.

-- 
Best regards,
Yuri Leikind