高手帮忙看下如下代码,怎么能在拖动VScroll1时,mschart的显示能反映更快??
偶的VScroll1现在是分成了6段,但是从第三段开始反映的时间越来越慢,是不是数据从MSHFlexGrid1.TextMatrix(i, j)导出来的原因?''chart显示Private Sub MnuFdnt_Click()
VScroll1.Max = 546: VScroll1.Min = 0
VScroll1.LargeChange = 91: VScroll1.SmallChange = 91
Dim i, j, Max, Min As Integer
MSChart1.Visible = True
MSChart1.ChartType = VtChChartType2dLine
Min = 1
Max = Val(VScroll1.Value)
ReDim arrDatac3(Max, 8)
 For i = 1 To Max
    For j = 6 To 7
    arrDatac3(i, j) = MSHFlexGrid1.TextMatrix(i, j)
    MSChart1.ChartData = arrDatac3
    MSChart1.ColumnLabel = i
    Next j
Next i
End Sub

解决方案 »

  1.   

    VB中可以用With语句优化速度,控件的Visible属性也可优化速度。修改后如下:Private Sub MnuFdnt_Click()
    VScroll1.Max = 546: VScroll1.Min = 0
    VScroll1.LargeChange = 91: VScroll1.SmallChange = 91
    Dim i, j, Max, Min As Integer
    '----------------------------------
    dim mhfGrid as MSHFlexGrid   
    Set mhfGrid = MSHFlexGrid1   '用一个对象变量指向MSHFlexGrid1,加快访问速度!
    '----------------------------------
    With MSChart1   '使用With提速
        .Visible = False   '提速
        .ChartType = VtChChartType2dLine
        Min = 1
        Max = Val(VScroll1.Value)
        ReDim arrDatac3(Max, 8)
        For i = 1 To Max
            For j = 6 To 7
                arrDatac3(i, j) = mhfGrid.TextMatrix(i, j)
                .ChartData = arrDatac3
                .ColumnLabel = i
            Next j
        Next i
        .Visible = True   '显示
    End With
    End Sub
      

  2.   

    wlxu1209(无限循环) :首先谢谢关注!
    我换上你的程序,简单测速,未见效果,还是比较慢,再帮偶想想办法?解决好的话,偶会继续加分的!
      

  3.   

    Private Sub MnuFdnt_Click()
    VScroll1.Max = 546: VScroll1.Min = 0
    VScroll1.LargeChange = 91: VScroll1.SmallChange = 91
    Dim i, j, Max, Min As Integer
    '----------------------------------
    dim mhfGrid as MSHFlexGrid   
    Set mhfGrid = MSHFlexGrid1   '用一个对象变量指向MSHFlexGrid1,加快访问速度!
    '----------------------------------
    With MSChart1   '使用With提速
        .Visible = False   '提速
        .ChartType = VtChChartType2dLine
        Min = 1
        Max = Val(VScroll1.Value)
        ReDim arrDatac3(Max, 8)
        For i = 1 To Max
            For j = 6 To 7
                arrDatac3(i, j) = mhfGrid.TextMatrix(i, j)            .ColumnLabel = i
            Next j
        Next i
        .ChartData = arrDatac3    '没看仔细哈,此句放在循环外试试!?
        .Visible = True   '显示
    End With
    End Sub
      

  4.   

    搞定,谢谢:wlxu1209(无限循环)