我要在一个active report中使用数十个标签,可是active report好像不支持控件数组,在代码中一个一个写控件名名太麻烦了,能不能动态生成控件名呢?

解决方案 »

  1.   

    很简单,activ report里面很多空间是可以编程的,在他们的示例程序中有这方面的例子!建议你到安装目录下找一找!
      

  2.   

    给你个示例,以前写的Private Sub DataReport_Initialize()
        
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        Dim i As Integer
        Dim mLeft As Long    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Persist Security Info=False;" & _
            "Data Source=" & App.Path & "\db1.mdb"
        rs.Open "select * from tb1", cn, adOpenKeyset, adLockOptimistic
        Set DataReport1.DataSource = rs
    '以上部分是设置 DataReport 的数据源    Dim dTextCol As New Collection
        Dim Ctl As Object'根据情况,预先在报表上添加多个相关控件
    '下面以RptTextBox控件为例
        For Each Ctl In DataReport1.Sections.Item("Section1").Controls
            If TypeName(Ctl) = "RptTextBox" Then
                Ctl.DataField = rs.Fields.Item(0).Name '先将所有TextBox(RptTextBox) 控件绑定到某一字段
                dTextCol.Add Ctl
            End If
            Ctl.Left = 0
            Ctl.Top = 0
            Ctl.Height = 400
            Ctl.Width = 1500
            Ctl.Visible = False
        Next Ctl    For i = 0 To rs.Fields.Count - 1
            With dTextCol.Item(i + 1)
                .Visible = True
                .DataField = rs.Fields.Item(i).Name '重新绑定字段
                .Left = mLeft
                mLeft = .Left + .Width
                '重新定位。还有Width等等比较复杂,要根据具体情况写代码判断
            End With
        Next i
        DataReport1.Sections.Item("Section1").Height = 400End Sub
      

  3.   

    sorry
    晕了,是activ report啊~~看错!