[Gambas-user] re turn value from a form

Doriano Blengino doriano.blengino at ...1909...
Wed Jan 7 13:13:03 CET 2009


kobolds ha scritto:
> in order to get  return value from a form , I create a variable in the form
>
> in ftest
> public retun_value as boolean =false
>
> public sub btnOK_click()
>  return_value = true
>  me.close
> end
>
> public sub btncancel_click()
>   return_value = false
>   me.close
> end
>
> --------------------------------
> from Fmain 
> public sub btnTest_click()
>  dim m_ftest = new ftest
>  m_ftest.showmodal
>  if m_ftest.return_value = false then
>     ......
>  endif 
> end
>
> when I run I get error object not found on "if m_ftest.return_value = false
> then"  . my guess is after the ftest close , the ref memory also gone . this
> shouldn't be happen like this right ?
>   
You are right - the form (better, the instance of the class) has gone.
There are three solutions.

1) Read the documentation. ShowModal() can return a value, which is the 
one passed to FTest.Close().
It has some limitations (if you close the form using the "X" button, 
this value will be 0, if I well remember).
This should be the canonical solution.

2) Don't know if it works. You could make *two* references to ftest 
(ref1=new ftest; ref2=ref1). When the form closes, there is still a 
reference; don't know what precisely do a form when it closes. On other 
platforms, a Close() simply hides the form, so this method works, but 
with gambas Close() normally destroys the form, so who knows what 
happens? This is a dirty solution.

3) Don't know if it works either. You could use Visible=False in FTest, 
instead of closing it. Again, on other platforms this works. The form is 
not destroyed and, if gambas is smart enough, it understands that a 
hidden form can not be modal.

Ciao,

-- 
Doriano Blengino

"Listen twice before you speak.
This is why we have two ears, but only one mouth."





More information about the User mailing list