• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • FREE webinar: What does a post IR35 reform CV look like? : Wed, Jul 28, 2021 7:15 PM - 8:15 PM BST More details here.

Basic VB question

  • Filter
  • Time
  • Show
Clear All
new posts

    Basic VB question

    Doing some educational software in VB6 - so much easier to make the UI pretty than in VC++ (any shade as long as it's grey). Generally peesopiss - but there's one thing I can't figure.

    How do you call a sub or function with an array of controls? Say if I had an array of command buttons Command1 and did something like:

    Thingy Command1
    sub Thingy(But() as CommandButton)

    don't work - get 'user defined type or array expected'.

    Is this what you want

    A form with 2 buttons in array Command1, each with an event

    Private Sub Command1_Click(Index As Integer)
    thingy Command1(Index)
    End Sub

    and thingy defined as

    Sub thingy(But As CommandButton)
    But.Caption = "Name is " & But.Name & " " & But.Index
    End Sub


      "so much easier to make the UI pretty than in VC++"

      Try Borland C++ Builder, that's also so much easier than VC++, and it's fast.


        Ta chaps, but I need to use an array of controls before getting to the click event - specifically I am creating a program for identifying natural specimens. I want it to be as general purpose as possible to work with several different databases, insects, mammals, grasses etc. without significant reprogramming.

        To that end I am reading the names of the pictures and captions on the buttons from a setup file when the form is loaded. Obviously I can have a loop outside the sub, or various other messy solutions, but can't believe there is not a neater solution to what must be a common problem.


          Answer provided below:

          Private Sub ControlArrayAsParameter()
          thingy Command1
          End Sub

          Private Sub thingy(x As Variant)
          Dim y As CommandButton

          For Each y In x
          y.Caption = "I'm a command button"
          End Sub

          In VB in most cases almost everything can be passed as a variant or object if you have problems and you can then reassign it to its correct type, or if you're not sure which type it is use 'VarType'.


            Ta joe.