Tobias,

Thanks. I've used your second method. It's so easy when you know how!

John



On 12/02/15 13:12, Tobias Boege wrote:
> On Thu, 12 Feb 2015, John Rose wrote:
>> I have a set of MaskBoxes (each with Group Cyphered & with MaxLength of
>> 1) with Names of CypheredMaskBox1, CypheredMaskBox2, CypheredMaskBox3
>> etc. CypheredMaskBox1 has Tag of 1, CypheredMaskBox2 has Tag of 2 etc.
>> In my Cyphered_Change event, I do validation of a user-entered character
>> but want to SetFocus to the next (i.e. with Tag of 1 greater than
>> current Tag) in case of successful validation. How do I do this (ideally
>> by extending the code fragment below)?
>>
>> Code fragment:
>> Dim iNextTag As Integer
>> Dim strNextTag As String
>> Dim strNextCyphered As String
>> iNextTag = CInt(Last.Tag) + 1
>> strNextTag = CStr(iNextTag)
>> strNextCyphered = "CypheredMaskBox" & strNextTag
>>
> You can adapt this... I would almost call it a paradigma or a way of life:
>
>   Private Sub Discover(h As Container)
>     Dim g As Control
>     For Each g In h
>       Print g ' (*)
>       If g Is Container Then Discover(g)
>     Next
>   End
>
> It recursively discovers all controls on a form where at (*) you can do
> whatever you want with a single control g, like checking whether it's a
> MaskBox and what its Tag is.
>
> Since you are searching MaskBoxes over an entire Form -- I assume; and this
> assumption is critical here -- and have your MaskBoxes named nicely, you can
> more comfortably use FForm.Controls (assuming your form's name is FForm):
>
>   Dim hNextMaskBox As MaskBox
>
>   ' your code fragment here
>   hNextMaskBox = FForm.Controls[strNextCyphered]
>   hNextMaskBox.SetFocus()
>
> If you must constrain your search to a non-Form container, you must resort
> to a variant of Discover(). If you additionally have embedded forms in the
> container you want to discover, things will get a little uglier but no need
> to discuss that if all you want is FForm.Controls.
>
> Regards,
> Tobi
>

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to