View Full Version : Basic VB question

12th September 2002, 20:28
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'.

13th September 2002, 08:45
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

13th September 2002, 10:36
"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.

13th September 2002, 16:07
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.

Joe Bloggs
14th September 2002, 00:31
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'.

14th September 2002, 22:54
Ta joe.