From: Meinrad Recheis Date: 2006-12-09T00:36:46+09:00 Subject: Re: Exiting a DialogBox created with FoxGUIb On 12/8/06, e aldaz wrote: > Dear All > > I am new to FOX and FoxGUIb. I have found FoxGUIb very > useful and I have created an application with menus, > one of which calls a DialogBox for the user to enter > some values. After finishing the user will press OK to > save data. > > Unfortunately I don't know how to let the > DialogBox know tha tonce the OK button is pressed it > should exit. It seems I need to send message ID_ACCEPT > to some recipient (not sure which) when the button OK > is clicked? But no idea how to do that with the code > that is generated by FoxGUIb as the button is created > in a different way to what I have seen in the examples > in the web, and I have no idea how to relate them ( > I'm afraid I haven't really understood the FXButton > API) me neither ;) ... there are some very hackish things that make the use of fox toolkit not as easy as it could be. > > The dialog box examples I have seen do something like > the following: > > # Accept > accept = FXButton.new(buttons, "&Accept", nil, > self, ID_ACCEPT, > FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y) > > > However the FoxGUIb creates a button doing: > > FX::Button.new(@verticalframe7){|w| > @button_ok=w > w.wdg_name='button_ok' > w.text="Ok" > w.width=21 > w.y=4 > w.height=21 > w.layoutHints=40 > w.x=26 > w.selector=FX::DialogBox::ID_QUIT > > @button_ok.connect(Fox::SEL_COMMAND){ > lat = textfield_lat.text > lon = textfield_lon.text > heading > =textfield_heading.text > #How > do I indicate that I want to accept and exit?:? > > } > } > > So in this last example, how do I exit the dialog when > button is clicked? the most simple aproach would be like this: @button_ok.connect(Fox::SEL_COMMAND){ .... @topwin.hide() # assuming that @topwin is the name of the dialogbox } however if your dialog box has been run modal this will not work. the dialog box disappears but is still modal. in this case you have to send an ID_ACCEPT message to @topwin like this: @topwin.handle(@button, FXSEL(Fox::SEL_COMMAND, Fox::FXDialogBox::ID_ACCEPT), nil) hope this helps, -- meinrad (henon) > > Thanks very much for your help > Eduardo >