如何加速给MSHFlexGrid改变颜色
我是按如下代码改变每行的颜色的,在LOAD的时候载入感觉不到慢,但是当用其他事件调用改变值时,但是发现很慢,一行一行的显示,大家有没有什么快速改变背景颜色的方法呢。
设置MSHFlexGrid每行的颜色
Public Sub SetRowColor(ByRefMSHFlexGridAsObject)
Dim j,i,objName
objName=TypeName(MSHFlexGrid)
If StrConv(Trim(objName),vbUpperCase)<>"MSHFLEXGRID" Then
Exit Sub
End If
MSHFlexGrid.FillStyle=1
For i=1To MSHFlexGrid.Rows-1
MSHFlexGrid.Row=i
If i Mod 2=0 Then
MSHFlexGrid.Col=0
MSHFlexGrid.ColSel=MSHFlexGrid.Cols-1
MSHFlexGrid.CellBackColor=&H80FFFF
End If
Next i
MSHFlexGrid.FillStyle=0
MSHFlexGrid.Row=0
MSHFlexGrid.Col=0
End Sub
[解决办法]
Public Sub SetRowColor(ByRefMSHFlexGridAsObject)
Dim j,i,objName
objName=TypeName(MSHFlexGrid)
If StrConv(Trim(objName),vbUpperCase)<>"MSHFLEXGRID" Then
Exit Sub
End If
MSHFlexGrid.Visible=False'加这句
MSHFlexGrid.FillStyle=1
For i=1To MSHFlexGrid.Rows-1
MSHFlexGrid.Row=i
If i Mod 2=0 Then
MSHFlexGrid.Col=0
MSHFlexGrid.ColSel=MSHFlexGrid.Cols-1
MSHFlexGrid.CellBackColor=&H80FFFF
End If
Next i
MSHFlexGrid.FillStyle=0
MSHFlexGrid.Row=0
MSHFlexGrid.Col=0
MSHFlexGrid.Visible=True'加这句
End Sub
试试看
[解决办法]
楼上正解, 一起接分.
[解决办法]
MSHFlexGrid1.Redraw = False
。
。
。
MSHFlexGrid1.Redraw = True
[解决办法]
实际上没有必要给所有行刷颜色,只需要给显示出来的行刷一下颜色就可以了。在行数有几百上千条的时候还是能明显提高速度的。
用Toprow和RowIsVisible两个属性就能判断出哪些行是当前显示的,将ScrollTrack设置为true,在scroll事件中刷颜色即可。
如果嫌这么做麻烦,可以用一下Redraw这个属性,在刷颜色之前设置为false,刷完之后设置为true,应该能提速。