MSHFlexGrid在单击题头排序后,显示格式就变为默认的格式了,所有的设置无效,代码如下:Private Sub HFgrd_Click()
  Static IsAsc  As Boolean
  
  If hfgrd.MouseRow = 0 Then
    IsAsc = Not IsAsc
    hfgrd.Col = hfgrd.ColSel
    If IsAsc Then
      rst.Sort = rst.Fields(hfgrd.Col).Name
    Else
      rst.Sort = rst.Fields(hfgrd.Col).Name + " desc"
    End If    '设置MSHFlexGrid显示格式为隔行不同背景颜色
    hfgrd.Redraw = False
    hfgrd.Rows = rst.RecordCount + 1
    For i = 1 To hfgrd.Rows - 1
      For j = 0 To rst.Fields.Count - 1
        With hfgrd
            .row = i
            .Col = j
            If i Mod 2 = 0 Then
                .CellBackColor = g_data.EvenColor
            Else
                .CellBackColor = g_data.OddColor
            End If
        End With
      Next j
    Next i
    hfgrd.Redraw = True
  Else
    rst.AbsolutePosition = hfgrd.row
  End If
End Sub程序运行时,MSHFlexGrid已经设置成隔行不同颜色显示,但在单击题头排序后, 就变成默认显示格式了,加上上面那段设置颜色的代码也无作用, 但是若在那段代码前加条: msgbox "" , 就可以正常的设置隔行显示格式,实在搞不明白. 高手指点一二,不胜感激! 

解决方案 »

  1.   

    在函数里也没用。
    后来用了个方法勉强算是得到用户同意了, 方法如下:
        '正常情况下数据集在排序后绑定的MSHFlexGrid会恢复成默认的显示格式, 并且对其显示格式的一切
        '设置无效
        '需加个MSBBOX对话框才能恢复正常,原因不明
        'SendKeys "{enter}"后对话框对用户不可见
        SendKeys "{enter}"
        MsgBox ""
        Call HFgrdSetDisplay(HFgrd, m_rstFront)