CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

怎么样提高这段程序的速度

楼主csdnhw(巍巍)2006-07-04 11:52:17 在 VB / 控件 提问

怎么样提高这段程序的速度  
   
          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

相关问题

关键词

得分解答快速导航

  • 帖主:csdnhw

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo