在界面上添加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问题?不知道到底是怎么回事,望高手解决。
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问题?不知道到底是怎么回事,望高手解决。
老实说,我vsf没用过picture。
二.本人不是很内行,但尽管外行,实践胜过理论.
三.我试着用你的方法 调用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
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
我直接拖进控件 没设属性 引用上面的代码 一字不差 估计 是 VSFlexGrid1 与 MsHflexGrid 不同吧 ?