如何在程序中动态增加一个控件数组(不是动态增加一个控件)?

解决方案 »

  1.   

    好像没有可能的吧,因为MSDN里写道Controls类型不是Collection类型,而是一个比Collection更小范围的集合对象,而且,在VB中不能够创建这个对象,我们只能使用已经存在的一个Controls类型的数组……
    所以,似乎你的问题没有什么答案诶……
      

  2.   

    用API创建一个控件,设定它的INDEX 再一个个的加控件
      

  3.   

    sysmaster(为什么我还不懂) :
    用API创建一个控件,设定它的INDEX 再一个个的加控件
    具体怎么实现?
      

  4.   

    可以,我以前写一个关于用户投诉的小程序,因为不能肯定某个单位或部分有多少领导要批复,所以其中的领导批复意见就是用动态添加SSTAB和textBOX实现的,不过代码现在不在单位,在家里的机器上,等我回家找到了,再给你帖上!
      

  5.   

    代码来了,看可有参考价值:
    程序的主要目的是在SSTAB的选项卡上添加RichTextBox控件:Private WithEvents CLYJText As RichTextBoxDim i, CLYJ_Count As Integer CLYJ_Count = rYD.RowCount
        If CLYJ_Count >= 3 Then
            SSTab1.Tabs = CLYJ_Count + 1
            SSTab1.TabsPerRow = CLYJ_Count + 1
                For i = 0 To CLYJ_Count
                    SSTab1.Tab = i
                    SSTab1.Caption = "处理意见" & i + 1
                    Set CLYJText = Controls.Add("RichText.RichTextCtrl.1", "CLYJText" & i, SSTab1)
                    With CLYJText
                        .Visible = True
                        .Height = 1815
                        .Left = 60
                        .Top = 360
                        .Width = 7935
                        .Tag = "CLYJ"
                         .Text = rYD.DataFrom("CLYJ", i) & vbNewLine _
                            & rYD.DataFrom("CLRM", i) & vbNewLine _
                            & rYD.DataFrom("CLRQ", i) & vbNewLine _
                            & rYD.DataFrom("CLSJ", i)
                .Locked = True
                .BackColor = &H8000000F
                        .Locked = True
                        .BackColor = &H8000000F
                    End With
                Next
        Else
            SSTab1.Tabs = 3
            SSTab1.TabsPerRow = 3
            For i = 0 To 2
            SSTab1.Tab = i
            SSTab1.Caption = "处理意见" & i + 1
            Set CLYJText = Controls.Add("RichText.RichTextCtrl.1", "CLYJText" & i, SSTab1)
                    With CLYJText
                        .Visible = True
                        .Height = 1815
                        .Left = 60
                        .Top = 360
                        .Width = 7935
                        .Tag = "CLYJ"
                        .Text = rYD.DataFrom("CLYJ", i) & vbNewLine _
                            & rYD.DataFrom("CLRM", i) & vbNewLine _
                            & rYD.DataFrom("CLRQ", i) & vbNewLine _
                            & rYD.DataFrom("CLSJ", i)
                .Locked = True
                .BackColor = &H8000000F
                        .Locked = True
                        .BackColor = &H8000000F
                    End With
            Next
    End If
      

  6.   

    注: rYD.datafrom(....)之类的是一个数据对象,你可以全部删除,添加的内容,
      

  7.   

    sanwaxubin(一笑而过) :
    RichText.RichTextCtrl.1代表什么东西,为什么后面要加上".1"
      

  8.   

    RichText控件的ProgID(RICHTEXT.RichtextCtrl.1)
      

  9.   

    C:\WINNT\system32\TABCTL32.OCX 的ProgID就是:TabDlg.SSTab.1
    你可以自己查啊!每个都有啊!
      

  10.   

    现在窗体中创建一个控件,比如command1 设置Index=0
    在程序中的必要代码位置添加load command1(n)
    其中n为你要添加的控件索引 如load command1(1)
      

  11.   

    douhapy(双喜) 
    现在窗体中创建一个控件,比如command1 设置Index=0
    在程序中的必要代码位置添加load command1(n)
    其中n为你要添加的控件索引 如load command1(1)你这样不是创建动态控件数组吧,因为这样创建的控件数组,设计时创建的不能删除.
      

  12.   

    若是你想在程序中动态添加Command1(0),并且在程序中动态删除这个控件,你可以参考VB6.0的Msdn目录下的例子,该例子在" ... ...\MSDN98\98VS\2052\SAMPLES\VB98\CtlsAdd"文件夹下。运用到了Licenses 集合和CallByName函数,限于篇幅,在下就不复制过来了。    希望该例子能对你有帮助!