callbyname vb6使用string作为参数

时间:2018-03-12 10:22:17

标签: vb6 callbyname

我试图通过使用CallByName和循环对象来将一些图像的可见性设置为false。

这是代码

Private Sub command1Click
dim theobj_str as string
dim ctr as integer
for ctr = 1 to 3
   theobj_str = "Images" & ctr
   CallByName theobj_str, "Visible", vbLet,False
end for
END SUB

它会抛出错误" TYPE MISMATCH"在" CallByName **theobj_str**..."

CallByName将一个对象作为其第一个参数。我需要以某种方式转换字符串" theobj_str"成对象。我怎么能这样做?

如果我将其称为CallByName Images2, "Visible", vbLet,False

,则CallByName可以正常工作

由于

1 个答案:

答案 0 :(得分:1)

如果您不需要使用CallByName,您可以遍历控件集合并检查类型。如果类型与您要隐藏的控件匹配,那么您可以通过这种方式设置它的可见属性。

代码如下所示:

Private Sub Command_Click()

    SetControlVisibility "Image", False

End Sub

Private Sub SetControlVisibility(ByVal controlType As String, ByVal visibleValue As Boolean)
Dim ctrl As Control

    For Each ctrl In Me.Controls
        If TypeName(ctrl) = controlType Then
            ctrl.Visible = visibleValue
        End If
    Next

End Sub

这样做可以让您在表单中添加更多图像控件,而不必记住在for循环中更改计数。

希望有所帮助。