大家好!   怎么在代码中动态生成控件数组?多谢!!

解决方案 »

  1.   

    Option Explicit
    Dim tmpi As IntegerPrivate Sub Command1_Click(Index As Integer)
        On Error Resume Next
        Load Command1(tmpi)
        Command1(tmpi).Visible = True
        Command1(tmpi).Move Command1(tmpi - 1).Left, Command1(tmpi - 1).Top + 100
        tmpi = tmpi + 1
    End Sub
      

  2.   

    上面的程序是基本的空间动态数组的思路,但必须注意一点,就是你要事先在窗体上放上一个index为0的控件,这样才可以象上面那样用load去加载。
    如果不是事先画好的话,那么首先要求这个控件有progid,象vb标准的各个控件,都是无法凭空加载的,因为他们都没有progid。所以,如果事先没有button,你不能去加载一个button,但如果事先没有一个flexgrid,你却可以动态加载一个flexgrid。
    具有progid的控件一般都是那种单独注册的ocx文件,包括我们自己写的自定义控件。至于如何加载,你可以在MSDN中找找相关的帮助,比如查找关键字controls.add或者licences.add。我现在手头没有代码,如果需要,晚上回家可以给你贴一段。
      

  3.   

    我试了一下, 上面这段代码没有产生一个新的控件. 我是在FORM的LOAD事件中运行这段代码的.
      

  4.   

    谢谢cryptonym(渔小鱼) , 能说明白一点吗
      

  5.   

    下面的内容保存为 aaa.frm 直接运行即可:VERSION 5.00
    Begin VB.Form Form1 
       Caption         =   "Form1"
       ClientHeight    =   3090
       ClientLeft      =   60
       ClientTop       =   450
       ClientWidth     =   4680
       LinkTopic       =   "Form1"
       ScaleHeight     =   3090
       ScaleWidth      =   4680
       StartUpPosition =   3  'Windows Default
       Begin VB.CommandButton Command1 
          Caption         =   "Command1"
          Height          =   375
          Index           =   0
          Left            =   840
          TabIndex        =   0
          Top             =   240
          Width           =   2175
       End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Option Explicit
    Dim tmpi As IntegerPrivate Sub Command1_Click(Index As Integer)
        tmpi = tmpi + 1
        Load Command1(tmpi)
        With Command1(tmpi)
          .Visible = True
          .Move Command1(tmpi - 1).Left, Command1(tmpi - 1).Top + .Height + 20
          .Caption = tmpi
        End With
    End Sub