如题

解决方案 »

  1.   

    '填充Listview的条目
    Private Sub List_Input()
    Dim J As Integer
    Dim K As Integer
    Dim Litem As Object
    Dim strFont As String
    Dim strAlign As String
    Dim blnClm As Boolean
        '表头
        lsvColumn.ColumnHeaders.Add 1, , "列名", 1600
        lsvColumn.ColumnHeaders.Add 2, , "列宽", 1600
        lsvColumn.ColumnHeaders.Add 3, , "字体", 1600
        lsvColumn.ColumnHeaders.Add 4, , "对齐", 1600
        lsvColumn.ColumnHeaders.Add 5, , "计算", 1600
        '表体
        If frmPrintReport.Visible Then
            txtLfHead.Text = rpt.strRppLfHead
            txtMdHead.Text = rpt.strRppMdHead
            txtRgHead.Text = rpt.strRppRgHead
        
            txtMdFoot.Text = rpt.strRppMdFoot
            txtRgFoot.Text = rpt.strRppRgFoot
            txtLfFoot.Text = rpt.strRppLfRoot
            
            txtTitle.Text = rpt.strRppTitle
            For K = 0 To frmReport.lstClm2.ListCount - 1
                blnClm = False
                For I = 1 To rpt.ClsRptTbls.Count
                    For J = 1 To rpt.ClsRptTbls(I).ClsRptFlds.Count
                        If frmReport.lstClm2.ItemData(K) = rpt.ClsRptTbls(I).ClsRptFlds(J).Key Then
                            blnClm = True
                            Exit For
                        End If
                    Next
                    If blnClm = True Then
                        Exit For
                    End If
                Next
                If blnClm Then
                    Set Litem = lsvColumn.ListItems.Add(, , frmReport.lstClm2.List(K))
                    
                    lsvColumn.ListItems(K + 1).Tag = frmReport.lstClm2.ItemData(K)
                    '列宽
                    If rpt.ClsRptTbls(I).ClsRptFlds(J).strClpColumn <> "" Then
                        Litem.ListSubItems.Add , , rpt.ClsRptTbls(I).ClsRptFlds(J).strClpColumn
                    Else
                        Litem.ListSubItems.Add , , "1in"
                    End If
                    '字体
                    Select Case rpt.ClsRptTbls(I).ClsRptFlds(J).intClpFont
                        Case 0
                            strFont = "0——普  通"
                        Case 1
                            strFont = "1——粗  体"
                        Case 2
                            strFont = "2——斜  体"
                        Case 3
                            strFont = "3——粗斜体"
                        Case 4
                            strFont = "4——下划线"
                        Case 5
                            strFont = "5——下划线粗体"
                        Case 6
                            strFont = "6——下划线斜体"
                        Case 7
                            strFont = "7——粗斜体下划线"
                    End Select
                    Litem.ListSubItems.Add , , strFont
                    '对齐
                    Select Case rpt.ClsRptTbls(I).ClsRptFlds(J).intClpAlign
                        Case 1
                            strAlign = "1——左对齐"
                        Case 2
                            strAlign = "2——居  中"
                        Case 3
                            strAlign = "3——右对齐"
                        Case Else
                            strAlign = "2——居  中"
                    End Select
                    Litem.ListSubItems.Add , , strAlign
                    '计算
                    Litem.ListSubItems.Add , , rpt.ClsRptTbls(I).ClsRptFlds(J).intCalType
                Else
                    Set Litem = frmReportSet.lsvColumn.ListItems.Add(, , frmReport.lstClm2.List(K))
                    lsvColumn.ListItems(K + 1).Tag = frmReport.lstClm2.ItemData(K)
                    Litem.ListSubItems.Add , , "1in"
                    Litem.ListSubItems.Add , , "0——普  通"
                    Litem.ListSubItems.Add , , "2——居  中"
                    Litem.ListSubItems.Add , , "0"
                End If
            Next
        Else
            For I = 0 To frmReport.lstClm2.ListCount - 1
                Set Litem = frmReportSet.lsvColumn.ListItems.Add(, , frmReport.lstClm2.List(I))
                lsvColumn.ListItems(I + 1).Tag = frmReport.lstClm2.ItemData(I)
                Litem.ListSubItems.Add , , "1in"
                Litem.ListSubItems.Add , , "0——普  通"
                Litem.ListSubItems.Add , , "2——居  中"
                Litem.ListSubItems.Add , , "0"
            Next
        End If
    End Sub
      

  2.   

    谢谢楼上的,但是我想用 listbox 怎么办呀?谢谢
      

  3.   

    用 ListView1吧,添加多列
       Dim Item As ListItem
        ListView1.View = lvwReport
        ListView1.ColumnHeaders.Add , , "代码", ListView1.Width / 2
        ListView1.ColumnHeaders.Add , , "真实值", ListView1.Width / 2
        
        Dim CN As New ADODB.Connection
        Dim Rs As New ADODB.Recordset
        Dim temp As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=Report;User Id=sa;Password=sa;"
        CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from table1", CN, adOpenDynamic, adLockBatchOptimistic
        Rs.MoveFirst
        Do While Not Rs.EOF
            Set Item = ListView1.ListItems.Add(, , Trim(Rs.Fields("lno")))
            
            Item.ListSubItems.Add , , Trim(Rs.Fields("lname"))
            Rs.MoveNext
        Loop
        Rs.Close
        CN.Close
      

  4.   

    楼上的真是执著,其实 listview 我也会用。不过还是谢谢你的热心肠。
    还有别的兄弟给个正确答案吗?
      

  5.   

    应该是不行。但可以通过作式化每个行项目来变项达到目的。例如,ListBox1.Add Field1 & "|" Field2 & "|" & Field3...不过,这样的效果比不上用ListView