vb6从Class模块获取数据

时间:2013-07-24 23:25:33

标签: vb6

我是vb6的新手,不善于搜索。这段代码有什么问题?我创建了form1并插入了类模块。

Private sub form_load()
 call Jo.Display(txtdate.text)
end sub

in may Class module ClsJo

public function Display(txtdate as string)
 txtdate = "123abc"
end function

1 个答案:

答案 0 :(得分:1)

Display函数有一个参数txtdate,它通过“引用”传递,这意味着该函数可能会改变它的值。您正在将值传递给该函数,因此我假设您希望txtdate.Text属性在调用后包含值“123abc”。

然而,这不会像你写的那样有用。 txtdate.Text是一个属性,属性不是真正的变量,它们是一种函数。您可以让“let”运算符设置属性值,使用“get”运算符来获取属性的值,但是您无法直接访问存储该值的实际变量。 因此,当传递给函数时,VB6将获取属性的值,从中创建临时变量并将该临时变量作为参数传递给函数。此临时变量的更改永远不会找到返回txtdate.Text属性的方法。

要获得我认为您想要的功能,您可以执行以下任一操作:

一个。自己创建一个变量,将其传递给函数并将txtDate.Text属性设置为返回的值。这将是我推荐的方法,因为该函数将具有更清晰的参数。像这样:

    Private Sub Form_Load()
      Dim myText As String
      myText = txtDate.Text
      call Jo.Display(myText)
      txtDate.Text = myText
   End Sub

B:将txtDate作为参数传递给函数,而不是属性,如下所示:

Public Sub Display(ByRef dateControl As Object)
   dateControl.Text = "123abc"
End Function

Private Sub Form_Load()
   Jo.Display txtDate
End Sub