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

-- 
"There's an old saying: Don't change anything... ever!" -- Mr. Monk

------------------------------------------------------------------------------
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