怎么样提高这段程序的速度
怎么样提高这段程序的速度
For i = 1 To MSHFlexGrid1.Rows - 1
If Trim(MSHFlexGrid1.TextMatrix(i, 3)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 4)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 5)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 6)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 7)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 8)) = 0 Then
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = RGB(255, 255, 255)
Next j
End If
If Trim(MSHFlexGrid1.TextMatrix(i, 3)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 4)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 5)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 6)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 7)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 8)) = 0 Then
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = RGB(0, 110, 255)
Next j
End If
If Trim(MSHFlexGrid1.TextMatrix(i, 3)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 4)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 5)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 6)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 7)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 8)) = 0 Then
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = &HC0C0FF
Next j
End If
If Trim(MSHFlexGrid1.TextMatrix(i, 3)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 4)) = 0 And Trim(MSHFlexGrid1.TextMatrix(i, 5)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 6)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 7)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 8)) = 0 Then
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = &HC0FFFF
Next j
End If
If Trim(MSHFlexGrid1.TextMatrix(i, 3)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 4)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 5)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 6)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 7)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 8)) = 0 Then
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = RGB(0, 110, 110)
Next j
End If
'
If Trim(MSHFlexGrid1.TextMatrix(i, 3)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 4)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 5)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 6)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 7)) = 1 And Trim(MSHFlexGrid1.TextMatrix(i, 8)) = 1 Then
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = &HFF80FF
Next j
End If
MSHFlexGrid1.TextMatrix(i, 0) = i
Next i
问题点数:20、回复次数:22Top
1 楼yorkness(机器猫)回复于 2006-07-04 12:20:45 得分 0
哇,这么多,累不累啊!Top
2 楼slinfo(MCSE MCSD.NET)回复于 2006-07-04 12:23:54 得分 0
把if条件改简单点Top
3 楼gsmlove(风飘风香)回复于 2006-07-04 12:44:34 得分 0
for 循环中For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Cols-1用一个integer型参数Top
4 楼of123()回复于 2006-07-04 13:22:03 得分 0
Dim flg As Integer
Dim backclr As Long
MSHFlexGrid1.Redraw = False
For i = 1 To MSHFlexGrid1.Rows - 1
flg = Val(MSHFlexGrid1.TextMatrix(i, 3))
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 4)) * 2
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 5)) * 4
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 6)) * 8
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 7)) * 16
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 8)) * 32
backclr = RGB(255, 255, 255)
Select Case flg
Case 1
Case 3
backclr = RGB(0, 110, 255)
Case 7
backclr = &HC0C0FF
Case 15
backclr = &HC0FFFF
Case 31
backclr = RGB(0, 110, 110)
Case 63
backclr = &HFF80FF
End Select
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = backclr
Next j
MSHFlexGrid1.TextMatrix(i, 0) = i
Next i
MSHFlexGrid1.Redraw = TrueTop
5 楼of123()回复于 2006-07-04 13:22:23 得分 0
Dim flg As Integer
Dim backclr As Long
MSHFlexGrid1.Redraw = False
For i = 1 To MSHFlexGrid1.Rows - 1
flg = Val(MSHFlexGrid1.TextMatrix(i, 3))
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 4)) * 2
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 5)) * 4
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 6)) * 8
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 7)) * 16
flg = flg + Val(MSHFlexGrid1.TextMatrix(i, 8)) * 32
backclr = RGB(255, 255, 255)
Select Case flg
Case 1
Case 3
backclr = RGB(0, 110, 255)
Case 7
backclr = &HC0C0FF
Case 15
backclr = &HC0FFFF
Case 31
backclr = RGB(0, 110, 110)
Case 63
backclr = &HFF80FF
End Select
MSHFlexGrid1.Row = i
For j = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Col = j
MSHFlexGrid1.CellBackColor = backclr
Next j
MSHFlexGrid1.TextMatrix(i, 0) = i
Next i
MSHFlexGrid1.Redraw = TrueTop
6 楼csdnhw(巍巍)回复于 2006-07-04 13:33:33 得分 0
能不能不用循环来变色,这个控件有没有“行背景色”的属性Top
7 楼flfq()回复于 2006-07-04 13:33:38 得分 0
ls正确,关键是自动重绘Top
8 楼gsmlove(风飘风香)回复于 2006-07-04 13:35:16 得分 0
最好不用重绘,因为这样最花时间Top
9 楼csdnhw(巍巍)回复于 2006-07-04 14:55:01 得分 0
MSHFlexGrid1.Redraw,是自动重绘吗,在这里有什么作用Top
10 楼csdnhw(巍巍)回复于 2006-07-04 14:55:45 得分 0
MSHFlexGrid1.Redraw可以提高速度吗Top
11 楼gsmlove(风飘风香)回复于 2006-07-04 16:49:35 得分 0
開發的是什麼系統呀,一般的系統就用of123() ( ) 信誉:125 給的那方法吧Top
12 楼csdnhw(巍巍)回复于 2006-07-05 12:00:13 得分 0
win2003得操作系统,可是如果有1千多条记录后,速度又又点慢Top
13 楼liusijiawo(天使伊安司)回复于 2006-07-05 12:02:13 得分 0
看的眼睛疼Top
14 楼csdnhw(巍巍)回复于 2006-07-05 13:42:57 得分 0
GIRD得负荷限制是多少,Top
15 楼csdnhw(巍巍)回复于 2006-07-05 13:45:47 得分 0
我是每次,在TEXT得CHARGE事件中执行这个,可是,它有时会减慢我在文本筐中输入得速度,有停顿感,怎么解决呢Top
16 楼csdnhw(巍巍)回复于 2006-07-05 13:46:39 得分 0
在text1的change事件中执行Top
17 楼fyming(努力不一定成功,放弃一定失败)回复于 2006-07-05 13:47:37 得分 0
楼上的都是好同志,有耐心,佩服.Top
18 楼csdnhw(巍巍)回复于 2006-07-06 12:47:07 得分 0
运行时加了DOEVENTS后有时候就会产生 “subscript of range”的错误,是怎么回事呢Top
19 楼of123()回复于 2006-07-06 12:55:57 得分 0
>我是每次,在TEXT得CHARGE事件中执行这个,可是,它有时会减慢我在文本筐中输入得速度,有停顿感,怎么解决呢
每输入一个字符你就重刷整个 MSHFlexGrid ?没有必要吧?
两个控件是什么关系,仅仅刷当前行或当前单元格不行吗?Top
20 楼viena(维也纳N02)回复于 2006-07-06 13:05:46 得分 0
楼上的是好同志,有耐心,佩服.
Top
21 楼csdnhw(巍巍)回复于 2006-07-06 13:37:45 得分 0
仅仅刷当前行或当前单元格,怎么做呢Top
22 楼csdnhw(巍巍)回复于 2006-07-06 13:40:56 得分 0
dbsqlopen "select * from coilinformation", cn, rs
If rs.EOF <> True Then
Set MSHFlexGrid1.DataSource = rs
Else
Set MSHFlexGrid1.DataSource = Nothing
End If
每次都要执行这个,怎么能加快速度Top




