不可以用MSHFlexgrid就能对行进行颜色控制了!

解决方案 »

  1.   

    MSHFlexgrid很好用,你说的那些功能都很容易就能实现,换个控键吧
      

  2.   

    '*********************************************************
    '* 名称:FlexRedraw
    '* 功能:表格的标题行(首行)的格式化
    '* 用法:FlexRedraw(控件名)
    '*********************************************************
    Public Function FlexRedraw(F As MSHFlexGrid) As String
        With F
            .Redraw = False  '禁止重画,防止闪动
            .BackColorFixed = RGB(190, 218, 178)  '标题行背景色
            .Row = 0         '设置标题行文字的对其方式
            .Col = 0
            .ColSel = .Cols - 1
            .CellForeColor = vbBlue '标题行文字颜色
            .CellAlignment = 4   '对其方式为中间中间
            .ScrollTrack = True  '移动滚动条的同时数据也滚动
            For I = .FixedRows To .Rows - 1 '单双行表格条纹背景色显示
                .Row = I          '选择第I行
                .Col = .FixedCols
                .ColSel = .Cols - 1
                If I / 2 = Int(I / 2) Then '判断是单是双
                    .CellBackColor = RGB(224, 248, 224)   '双行的底色
                Else
                    .CellBackColor = RGB(240, 248, 224)    '单行的底色
                End If
            Next I
        
            .Row = 1
            .Col = 1
            .ColSel = .Cols - 1
            .Redraw = True '允许重画,显示表格
        End With
    End Function
      

  3.   

    DataGrid 只能改变整个BackColor
      

  4.   

    不错,你应该用MSHFLEXGRID控件,很容易的。
    以下是一个实例:
    Case "合同客户一览表"Dim num As Integer
    If re10.State Then
    re10.Close
    End If
    If db.State = 0 Then
    db.Open connstr
    re10.CursorLocation = adUseClient
    re10.Open "select com_name,month,date,je,number,dept,meno  from yjdan order by contract_num", connstr, adOpenDynamic, adLockOptimistic
    db.Close
    End IfMSHFlexGrid1.Clear
    MSHFlexGrid1.Rows = re10.RecordCount + 1
    MSHFlexGrid1.Cols = re10.Fields.Count + 1
    MSHFlexGrid1.FixedRows = 0
    MSHFlexGrid1.Row = 0
    MSHFlexGrid1.Col = 0
    MSHFlexGrid1.Text = ""
    MSHFlexGrid1.Col = 1
    MSHFlexGrid1.Text = "公司名称"
    MSHFlexGrid1.Col = 2
    MSHFlexGrid1.Text = " 月"
    MSHFlexGrid1.Col = 3
    MSHFlexGrid1.Text = " 日"
    MSHFlexGrid1.Col = 4
    MSHFlexGrid1.Text = "  消费金额"
    MSHFlexGrid1.Col = 5
    MSHFlexGrid1.Text = "  消费卡号"
    MSHFlexGrid1.Col = 6
    MSHFlexGrid1.Text = "  消费部门"
    MSHFlexGrid1.Col = 7
    MSHFlexGrid1.Text = "  备    注"
    MSHFlexGrid1.ColWidth(0) = 200
    MSHFlexGrid1.ColWidth(1) = 1200
    MSHFlexGrid1.ColWidth(2) = 420
    MSHFlexGrid1.ColWidth(3) = 420
    MSHFlexGrid1.ColWidth(4) = 1000
    MSHFlexGrid1.ColWidth(5) = 1000
    MSHFlexGrid1.ColWidth(6) = 1200
    re10.MoveFirst
    m = 0
    j = 0
    For m = 1 To re10.RecordCount
    MSHFlexGrid1.Row = m
    For j = 0 To re10.Fields.Count - 1
    MSHFlexGrid1.Col = j + 1
    MSHFlexGrid1.Text = re10.Fields(j).Value
    MSHFlexGrid1.CellAlignment = flexAlignLeftCenter
    Next j
    MSHFlexGrid1.Refresh
    j = j + 1
    re10.MoveNext
    Next m
    With MSHFlexGrid1
           If .Rows > 1 Then
                .FillStyle = flexFillRepeat
                For i = .FixedRows + 1 To .Rows - 1 Step 2
                    .Row = i
                 .Col = .FixedCols
                    .ColSel = .Cols() - .FixedCols
                    .CellBackColor = &H8000000F 
                Next i
               .FillStyle = flexFillSingle
                .Sort = flexSortGenericAscending
           .MergeCells = flexMergeRestrictColumns
            End If
    End With