在VB6.0中新建一个Exe工程,在Form1上添加一个按钮,命名为Command1。Command1_click() '事件代码如下
Static myform as Formset myform = new Form1 '问题就出在这句代码上NewForm myform
myform.showend sub在工程中添加一个模块,代码如下。public sub NewForm(x as Form1)
dim thisform as Formset thisform = x
thisform.command1.top = thisform.command1.top + 300end sub完成上述代码后,运行程序,点击Command1按钮,程序会创建一个新的窗体(第二个),形式如同Form1(第一个)。
但是,问题来了。在新建的窗体上,点击Command1按钮,将再次新建一个窗体(第三个)。第三个窗体上的按钮位置与第二个窗体上的按钮位置一样。而我的意图是,每新建一个窗体,则Command1按钮的位置下移一段距离,按钮在不同窗体中,位置都不同,上述代码明显做不到。问题就在 set myform = new Form1 这句话上。
为了实现我的目标,在程序中加入一个public变量,累加这个public变量,我的确做到了。
但是,问题又来了(靠,我笨嘛,你多包涵)。按照我修改后的设计,点击不同的窗体上的按钮,产生新的窗体上的按钮的位置不相同(逐渐下移)。但是,只点击一个窗体,产生的窗体上的按钮位置也不相同(因为public变量)。
好了,现在我的最终意图清晰了。我本意希望在A窗体点击按钮,产生B窗体,B窗体上的按钮位置下移。点击B窗体,产生C窗体,C上的按钮比B的又下移了一点。再次点击A窗体,产生D窗体,D与B完全一样。你明白了吗?这实际上是继承,不同于简单的对象引用。但是,VB6.0中没有继承(我干瞪眼,干瞪眼,瞪眼,眼……)。
我敲了这么多字,就想问一句,在VB6.0下,怎样完全实现我的意图。
Static myform as Formset myform = new Form1 '问题就出在这句代码上NewForm myform
myform.showend sub在工程中添加一个模块,代码如下。public sub NewForm(x as Form1)
dim thisform as Formset thisform = x
thisform.command1.top = thisform.command1.top + 300end sub完成上述代码后,运行程序,点击Command1按钮,程序会创建一个新的窗体(第二个),形式如同Form1(第一个)。
但是,问题来了。在新建的窗体上,点击Command1按钮,将再次新建一个窗体(第三个)。第三个窗体上的按钮位置与第二个窗体上的按钮位置一样。而我的意图是,每新建一个窗体,则Command1按钮的位置下移一段距离,按钮在不同窗体中,位置都不同,上述代码明显做不到。问题就在 set myform = new Form1 这句话上。
为了实现我的目标,在程序中加入一个public变量,累加这个public变量,我的确做到了。
但是,问题又来了(靠,我笨嘛,你多包涵)。按照我修改后的设计,点击不同的窗体上的按钮,产生新的窗体上的按钮的位置不相同(逐渐下移)。但是,只点击一个窗体,产生的窗体上的按钮位置也不相同(因为public变量)。
好了,现在我的最终意图清晰了。我本意希望在A窗体点击按钮,产生B窗体,B窗体上的按钮位置下移。点击B窗体,产生C窗体,C上的按钮比B的又下移了一点。再次点击A窗体,产生D窗体,D与B完全一样。你明白了吗?这实际上是继承,不同于简单的对象引用。但是,VB6.0中没有继承(我干瞪眼,干瞪眼,瞪眼,眼……)。
我敲了这么多字,就想问一句,在VB6.0下,怎样完全实现我的意图。
x应该是form对象,而不是form1
public sub NewForm(x as Form)‘’‘’
dim thisform as Formset thisform = x
thisform.command1.top = thisform.command1.top + 300end sub
Dim a As Form1
Set a = New Form1
a.Command1.Top = Me.Command1.Top + 300
a.Show
Set a = Nothing
End Sub
Private Sub Command1_Click()
Dim a As Form1
Set a = New Form1
a.Command1.Top = Me.Command1.Top + 300
a.Show
Set a = Nothing
End Sub
set NewForm=New frmSource
NewForm.Command1.Top=NewForm.Command1.Top+300
end Function'--------------------碉用---------------
Command1_click() '事件代码如下
set myform = NewForm(Self) '技巧呵
myform.show
end sub
Public Function NewForm() As Form
Static N As Single
N = N + 300
Set NewForm = New Form1
NewForm.Command1.Top = NewForm.Command1.Top + N
End Function'--------------------碉用---------------
Command1_click() '事件代码如下
set myform = NewForm(Self) '技巧呵
myform.show
end sub
'--------------------碉用---------------
Private Sub Command1_click() '事件代码如下
Set myform = NewForm
myform.Show
End Sub
set myform = NewForm(Self) '技巧呵
这句代码中Self是什么意思,它是VB6.0的关键字吗?
我试了一下你的方法,编译失败,就错在这句上,还请你进一步指明,谢谢。Seaneal