在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下,怎样完全实现我的意图。

解决方案 »

  1.   

    这里错了
    x应该是form对象,而不是form1
    public sub NewForm(x as Form)‘’‘’
    dim thisform as Formset thisform = x
    thisform.command1.top = thisform.command1.top + 300end sub
      

  2.   

    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
      

  3.   

    UP 
    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
      

  4.   

    '===============太简单了===========================不是有个标准模块吗,可以利用一下。在工程中添加一个模块,代码如下。(修正为函数)public Function NewForm(frmSource as Form) as Form
     set NewForm=New frmSource
     NewForm.Command1.Top=NewForm.Command1.Top+300
    end Function'--------------------碉用---------------
    Command1_click()  '事件代码如下
     set myform = NewForm(Self)  '技巧呵
     myform.show
    end sub
      

  5.   

    '================修正版====================
    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
      

  6.   

    zhangxiushu(山高水长),你好:谢谢你的回答,我想问一下
    set myform = NewForm(Self)  '技巧呵
    这句代码中Self是什么意思,它是VB6.0的关键字吗?
    我试了一下你的方法,编译失败,就错在这句上,还请你进一步指明,谢谢。Seaneal
      

  7.   

    对不起,那是DELPHI里的关键字