HOWTO: VB3: Pass an Array of Controls to a SUB or FUNCTION

Last reviewed: March 24, 1997
Article ID: Q143426
The information in this article applies to:

- Microsoft Visual Basic programming system for Windows, version 3.0

SUMMARY

In Microsoft Visual Basic version 3.0 for Windows, it is not possible to pass a control array to a user defined SUB or FUNCTION. You can only pass elements of a control array.

WORKAROUND

In order to work around this limitation, you can create an array of specific objects and pass this array to a Sub or Function.

Step-by-Step example

The following example converts the content of all the Textboxes on a form to upper-case characters when the user clicks on the Command Button.

  1. Start Visual Basic for Windows. If Visual Basic is already running, click New Project on the File menu (ALT+F+N). Form1 is created by default.

  2. Add a Command Button named Command1 to the form.

  3. Add 3 text boxes to the form named Text1.

  4. Add the following code to the general declarations section of Form1:

          Sub AllUcase(txt() As TextBox)
            Dim i As Integer
            For i = LBound(txt) To UBound(txt)
                txt(i) = UCase(txt(i))
            Next i
          End Sub
    
    

  5. In the Command1_Click event of Form1, add the following code:

          Sub Command1_Click()
            On Error Resume Next
            Dim i As Integer
            Dim Again As Integer
            ReDim Tabtxt(0) As TextBox
    
            i = 0
            Again = True
            While Again
              Text1(i).Tag = Text1(i).Tag
              If Err = 0 Then
                Redim Preserve TabTxt(0 To i)
                Set TabTxt(i) = Text1(i)
              Else
                Again = False
              End If
              i = i + 1
            Wend
            Call AllUcase(TabTxt())
          End Sub
    
    

  6. Press ALT+F+V to save the project. Then press F5 to run the program. Click once on the form and exit the application.

  7. Once the program is running, enter values in the different text boxes and click on the Command1 button.

In Visual Basic 4.0, a control array can be passed as an Object. The following code passes a control array of TextBoxes, and adds another TextBox to the control array. The call to the SUB would be as follows:

      AddControlArrayElement Text1

The code in the procedure would be as follows:

   Sub AddControlArrayElement (ControlArray as Object)
     NextElement% = ControlArray.Count
     Load ControlArray(NextElement%)
     ControlArray(NextElement%).Top = ControlArray(NextElement%-1).Top+100
     ControlArray(NextElement%).Visible=True
   End Sub
 

	
	


Keywords : vbwin kbprg
Version : 3.0
Platform : WINDOWS


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: March 24, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.