在界面上添加Picture控件和VSFlexGrid控件,Picture中添加图片,并设置属性AutoRedraw=True。代码如下:Private Sub form_load()Dim i As IntegerMe.VSFlexGrid1.RowHeightMin = 300
Me.VSFlexGrid1.ColWidthMax = 300VSFlexGrid1.Rows = 10000
VSFlexGrid1.Cols = 2For i = 1 To VSFlexGrid1.Rows - 1
    Picture1.Cls
    Picture1.CurrentX = 10
    Picture1.CurrentY = 30
    Picture1.Print CStr(i)    VSFlexGrid1.Row = i
    VSFlexGrid1.Col = 1
    Set VSFlexGrid1.CellPicture = Picture1.Image
NextEnd Sub运行后程序崩溃!把VSFlexGrid1.Rows设为9500以下就好了,不知道为什么。
如果只把Picture1.Cls这行去掉程序就不会崩溃,难道是Cls函数问题?
如果只把VSFlexGrid1.Row = i和VSFlexGrid1.Col = 1这两行放到FOR循环的外部,也不会出现崩溃现象。难道是VSFlexGrid问题?不知道到底是怎么回事,望高手解决。
    

解决方案 »

  1.   

    什么版本的?
    老实说,我vsf没用过picture。
      

  2.   

    找着呢,是Picture1.Print CStr(i)这句出错,弹出的对话框说“实时错误'480':应用程序定义或对象定义错误”。
      

  3.   

    可能是VSFlexGrid控件的行数属性限制了,我的机器上也调试不过去。
      

  4.   

    一.VSFlexGrid我没用过,但看你的代码应该是与 MsHflexGrid一样的表格
    二.本人不是很内行,但尽管外行,实践胜过理论.
    三.我试着用你的方法 调用Picture1.Image 跑了1000多笔时电脑开始卡,到了2000多笔时电脑等于是死机状态,只能重启电脑, 我出差在外,用的是本本, 1.6G cpu 512M 内存 档次够低了, 最后我用我的方法自定义对象, 轻轻松松的跑完了10000笔(如图) 只用了23秒, 第二次跑了30000多笔,电脑完全正常操作.
    四.我估计是使用Picture1.Image 它会不停地耗内存,而自定义的Picture可能没耗多少,看看任务管理器,程序在运行这10000笔时 没超过18%还有它与ListBox一样,先将Visible=False 跑完再 True,避免表格不断的刷新, 这将会快速N多好了看代码Dim pic As StdPicture, StartTm&
    Private Sub Form_Load()
       MSHFlexGrid1.Rows = 10001
       MSHFlexGrid1.Cols = 6
       Picture1.Picture = LoadPicture("c:\truck1.gif")
    End SubPrivate Sub Command1_Click()
       '************************ 指定行列加载图片
       MSHFlexGrid1.Col = 2
       Set pic = Picture1.Picture
       StartTm = Timer
       MSHFlexGrid1.Visible = False
       For i = 1 To 10000
          DoEvents
          MSHFlexGrid1.Row = i
          MSHFlexGrid1.ColWidth(2) = 5200
          MSHFlexGrid1.RowHeight(i) = 1900
          Set MSHFlexGrid1.CellPicture = pic
          Me.Caption = CStr(i)
       Next i
       MSHFlexGrid1.Visible = True
       MsgBox Timer - StartTm
    End Sub
      

  5.   

    呵 既然知道是Image问题 转个思路 图片搞定后再赋值给这个Cell文字靠左靠右或居中  字体大小再定义测试结果 一样顺畅 稍慢了2 3 秒Dim pic As StdPicture, StartTm&
    Private Sub Form_Load()
      MSHFlexGrid1.Rows = 10001
      MSHFlexGrid1.Cols = 6
      Picture1.Picture = LoadPicture("c:\truck1.gif")
    End SubPrivate Sub Command1_Click()
      '************************ 指定行列加载图片
      MSHFlexGrid1.Col = 2
      Set pic = Picture1.Picture
      StartTm = Timer
      MSHFlexGrid1.Visible = False
      For i = 1 To 10000
         DoEvents
         MSHFlexGrid1.Row = i
         'MSHFlexGrid1.Col = 2
         MSHFlexGrid1.ColWidth(2) = 5200
         MSHFlexGrid1.RowHeight(i) = 1900
         Set MSHFlexGrid1.CellPicture = pic
         Me.Caption = CStr(i)
         MSHFlexGrid1.CellAlignment = 1
         MSHFlexGrid1.Text = CStr(i)
      Next i
      MSHFlexGrid1.Visible = True
      MsgBox Timer - StartTm
    End Sub
      

  6.   

    设置VSFlexGrid1.PicturesOver = True文字就不会被遮住了
      

  7.   

    我找到原因了,将VSFlexGrid1.PicturesOver = True 表格内的文字就不会被表格内的图片遮住。在此,非常感谢cbm666的帮助!结帖给分!
      

  8.   


    我直接拖进控件 没设属性 引用上面的代码 一字不差 估计 是 VSFlexGrid1 与 MsHflexGrid 不同吧 ?