Meinrad Recheis
12/8/2006 3:37:00 PM
On 12/8/06, e aldaz <ardhazes@yahoo.com> 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
>