我是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
答案 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