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.
···
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.
–
Best regards,
Yuri Leikind