[Gambas-user] How do I pass a user parameter from a dialog form?
Rolf-Werner Eilert
eilert-sprachen at ...221...
Wed Nov 19 09:13:36 CET 2014
Am 18.11.2014 21:58, schrieb Tobias Boege:
> On Tue, 18 Nov 2014, Martin McGlensey wrote:
>> Hello,
>>
>>
>>
>> I have created a dialog form. As created by Gambas, it has an OK and Cancel
>> button. I want to return three properties or an array from the form. One
>> each for the three textboxes on the form.
>>
>> I added a textbox to the form to test it. Call it Textbox1. Used the code
>> below to add a property called "Login" to the Dialog:
>>
>>
>>
>> Property Login As String
>>
>> Private strLogin AS String
>>
>>
>>
>> Private Function Login_Read()
>>
>> Return txtTextbox1.Text
>>
>> Return
>>
>>
>>
>> Private Sub Login_Write(Value as String) as String
>>
>> strLogin = Value
>>
>> End
>>
>>
>>
>> I call the Dialog from the main form by frmDialog.ShowModal. When I load the
>> frmDialog, enter the text in the textbox and click OK. The Dialog closes but
>> no value is returned to the main form.
>>
>> If I explicitly set Login_Read to Return "XYZ" it works properly. It
>> returns "XYZ" to the main form. If I try to get the contents of
>> Textbox1.Text it returns an empty string. There has got to be a way of
>> returning the value of a textbox as a property of a dialog form. I'd rather
>> not use public variables on the main form as there are too many variables
>> already.
>>
>> Would you guys please point me in the right direction.
>>
>
> This is a standard task and therefore a "template solution" evolved in the
> Gambas sources. Attached is a project which shows how to do it cleanly, no
> public variables and no auxiliary classes needed.
>
> If you have a problem with the project and comments being German, I will
> translate it for you...
>
> Regards,
> Tobi
>
>
Thanks for that example. Never realised there would be this way to do
it. It does indeed save a lot of trouble with values from dialogs. On
the other hand, it means changing the form calls I'm used to from a
simple "formxyz.ShowModal" to "DIM hForm As New formxyz" "aCollection =
hForm(...)".
Let me ask two things I stumbled over when studying the code:
Where would I find this "call" thing in the documentation? F2 doesn't
react to event calls, and I cannot find it under the event descriptions
(like Event Management etc.).
Why is a SUB used with a Return value? Wouldn't it be more up to
standards to use a FUNCTION instead? (As far as I understand, a SUB is a
function without a return value, one that would be of type "void" under C.)
Regards
Rolf
More information about the User
mailing list