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 "" , 就可以正常的设置隔行显示格式,实在搞不明白. 高手指点一二,不胜感激!
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 "" , 就可以正常的设置隔行显示格式,实在搞不明白. 高手指点一二,不胜感激!
后来用了个方法勉强算是得到用户同意了, 方法如下:
'正常情况下数据集在排序后绑定的MSHFlexGrid会恢复成默认的显示格式, 并且对其显示格式的一切
'设置无效
'需加个MSBBOX对话框才能恢复正常,原因不明
'SendKeys "{enter}"后对话框对用户不可见
SendKeys "{enter}"
MsgBox ""
Call HFgrdSetDisplay(HFgrd, m_rstFront)