求助,如何加快改变 MSFlexGrid 背景色的速度

ring2004 2010-09-15 03:00:33
我用的是下面的方法,我现在MSFlexGrid1 里有60条数据时,给每列填充背景色就很慢了,是否有更高效快捷的方法,谢谢!

With MSFlexGrid1 '改变列的背景色

For K = 1 To .Cols - 1
If K = 8 Or K = 10 Or K = 12 Or K = 14 Or K = 15 Or K = 16 Then
.Col = K
For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
End If
Next K

End With
...全文
94 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhone99 2010-09-16
  • 打赏
  • 举报
回复
Dim a() As String

a = Split("8,10,12,14,15,16", ",")

With MSFlexGrid1 '改变列的背景色

For K = 0 To UBound(a)
.Col = a(i)

For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
Next K

End With
ring2004 2010-09-16
  • 打赏
  • 举报
回复
谢谢,帅呆了。。。。
yachong 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ring2004 的回复:]
additem方法我昨天下午刚试用的,我刚才已经结账了,^_^
十分感谢!

另外,改变颜色的方法有点问题,填充到最后一列时,只是第一个单元格被填充颜色,下面的单元格都是被选中的深蓝色。。。。。。
With MSFlexGrid1
.Redraw = False'这个可以快一点
.FillStyle = flexFillRepeat '设置这个属性,一次改变一行、一列
F……
[/Quote]
在填充完了以后随便改变一下row或者col就行了
比如:
....
Next k
.row=0 '加上这一句
.Redraw = True
....
ring2004 2010-09-16
  • 打赏
  • 举报
回复
additem方法我昨天下午刚试用的,我刚才已经结账了,^_^
十分感谢!

另外,改变颜色的方法有点问题,填充到最后一列时,只是第一个单元格被填充颜色,下面的单元格都是被选中的深蓝色。。。。。。
With MSFlexGrid1
.Redraw = False'这个可以快一点
.FillStyle = flexFillRepeat '设置这个属性,一次改变一行、一列
For k = 1 To .Cols - 1
If k = 8 Or k = 10 Or k = 12 Or k = 14 Or k = 15 Or k = 16 Then
.Col = k
.Row = 1
.RowSel = .Rows - 1
.CellBackColor = &HFEFBDE '改变背景色
End If
Next k
.Redraw = True
End With
ring2004 2010-09-16
  • 打赏
  • 举报
回复
太强悍了!上次你帮我搞定的,谢谢!
yachong 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ring2004 的回复:]
这种很实际的功能为什么MSFlexGrid不留一个方法,一次改变一列的颜色。。。。真是遗憾
[/Quote]
有的,可以一次改变一列
    With MSFlexGrid1
.Redraw = False'这个可以快一点
.FillStyle = flexFillRepeat '设置这个属性,一次改变一行、一列
For k = 1 To .Cols - 1
If k = 8 Or k = 10 Or k = 12 Or k = 14 Or k = 15 Or k = 16 Then
.Col = k
.Row = 1
.RowSel = .Rows - 1
.CellBackColor = &HFEFBDE '改变背景色
End If
Next k
.Redraw = True
End With

这个代码用的时间是你原来的十分之一左右
楼主上一个帖子既然用additem解决了,是不是该给分了?
俺很久没捞到分了呢
ring2004 2010-09-16
  • 打赏
  • 举报
回复
这种很实际的功能为什么MSFlexGrid不留一个方法,一次改变一列的颜色。。。。真是遗憾
ttsffgg 2010-09-16
  • 打赏
  • 举报
回复
上次,你试图逐单元格填充数据,解决方法是用additem取代,或者直接绑定数据库
但这次你要逐单元格设置颜色,那就没办法替代了~~~~

总会有绕不开
.Col
.Row
这两个属性的时候~~~
ring2004 2010-09-16
  • 打赏
  • 举报
回复
To overown:
上次的问题,填充数据用additem可以非常快地显示出来。
VB code
With MSFlexGrid1
.Rows = 1
Do While Not rs_flex3.EOF
.additem "" & vbtab & rs_flex3.Fields("team_nm") & vbtab & rs_flex3.Fields("worker_id") & vbtab & rs_flex3.Fields("worker_nm") & vbcrlf
rs_flex3.MoveNext
Loop
End With
ring2004 2010-09-16
  • 打赏
  • 举报
回复
To jhone99:用了你的方法,和我的那段代码运行速度是一样的.....不过仍然感谢!
ttsffgg 2010-09-16
  • 打赏
  • 举报
回复
....上次问这个好像也是楼主!
ttsffgg 2010-09-16
  • 打赏
  • 举报
回复
MSFlexGrid1
只要是有这两行
.Col = K
.Row = J
永远快不起来
jhone99 2010-09-16
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim a() As String
Dim K As Integer
Dim J As Integer

a = Split("8,10,12,14,15,16", ",")

With MSFlexGrid1 '改变列的背景色
For K = 0 To UBound(a)
.Col = a(K)

For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
Next K
End With

End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧