Return value from Form

ghislain

New Member
Licensed User
I created a form [say: Selection-form] which will be used several times to select something. How do I stop my program - wait until the Selection-form is completed - and use the result?

Something like:

result = SelectionForm.GetSomething
' wait until something is selected
txtResult.text = result


Anybody know?
Thanks - Ghislain
 

BjornF

Active Member
Licensed User
Longtime User
The way I would do it is to just use the selectionform.show when you want to to get the information and include an "Ok" and a "Cancel" button on the form:

Sub btnOk_click
result=txtSelection.text
selectionform.close
end sub

Sub btnCancel_click
selectionform.close
end sub

But I am sure there are more elegant solutions around :)

all the best / Björn
 

RandomCoder

Well-Known Member
Licensed User
Longtime User
Ghislain,

There are many ways to acheive what you want.
BjornF has suggested a good event based way of doing this.
You could also use a Do Until/Do While command or If Then to loop back through the code until your value has changed.

Have you checked out Erel's Input Panel which can be found here http://www.b4x.com/forum/showthread.php?t=108
You might be able to adapt this to fit your needs.

Regards,
Randomcoder
 

ghislain

New Member
Licensed User
Hello again!

BjornF,
Your solutions seems logical and i have tried it.
But - as soon as you call formSelection.show the program continues and the return value from btnClick_OK will never be captured..

RandomCoder
Thanks. I hope i will find a solution which works with forms in the future. But the panel will do the trick for the time being..
Thinking about it - it won't work. The input-panel example doesn't return a value either..

Bummer!
I guess a while-wend loop is the only option. It seems quite processor intense to me. I hope there is a better solution. It should be possible - eg: calendar-control & open-dialog.

Ghislain
 

joedoe77

New Member
What we need is to add modal/modeless to the Show method of the form, so:

Form2.Show 0 will work as ususal (Form2 shows but the code continues after to executre after Form2.Show)

but,

Form2.Show 1 will show Form2 and waits until Form2 is closed (btw: how about a "REAL" close?)
 
Top