使用变量访问VB6控件

时间:2018-07-21 09:23:04

标签: vb6

我有一组控件,例如Shape1,Shape2,Shape3(不是控件数组)。我可以使用Shapei或Shape(i)在循环或其他方式(其中i是变量)中访问控件吗?还是有任何方法可以做到这一点。请给我一个解决方案。预先感谢

2 个答案:

答案 0 :(得分:1)

我认为Peter使用数组来构建控制循环是正确的主意。

我认为您可以使用循环直接访问控件名称

Sub DoShapeStuff(intNumShapes as integer)
   Dim shp As Control

   For i = 1 to intNumShapes 
      Set shp = me.Controls("Shape" & i)
      ' Do Shape manipulation stuff here using shp variable
   Next i

End Sub

答案 1 :(得分:0)

将需要迭代的控件转换为控件数组是执行此操作的简单方法,通常只会使所有事情变得更有意义。

但是,如果您真的必须用困难的方式执行此操作,我认为方法是使用表单的Controls property获取其Controls collection。您可以遍历所有控件,以其名称找到所需的控件,然后对它执行所需的操作。

像这样的事情,尽管这是由于内存,因为我已经很多年没有在VB6中编程了,也没有安装IDE,所以我可能在语法上有些错误:

Private Function GetShapeByName(ByVal ShapeName as String) As Shape
    Dim currentControl as Control
    For Each currentControl In Controls
        If currentControl.Name = ShapeName Then
            Set GetShapeByName = currentControl
            Exit Function
        End If
    Next
End Function

然后,要在每个Shape中循环,可以执行以下操作:

Dim i as Integer
Dim CurrentShape as Shape
For i = 1 To 3
    Set CurrentShape = GetShapeByName("Shape" & i)
    ' Do something with CurrentShape here
Next

但是,正如您所看到的,每次查找都需要做很多工作,而且模拟效果很差。