用Series1.ADD(datarx32,'',clBlue);当显示框显示满后波形就不变了,不能实现右移效果
参考网上的代码
  With Series1 do
  begin
  tmpX:=Series1.XValues[1]-Series1.XValues[0];
  Series1.Delete(0);
  Series1.AddXY(Series1.XValues.Last+tmpX,datarx32,'',clTeeColor);
  end;
但是运行时出错,错误提示为
raised exception class EAccessViolation with message 'Access violation at address 005178C2 in '串口通信.exe'.Read of address 00000008'.
在调试运行该提示会出现两次,直接运行生成的exe文件没有出错提示,也没显示结果

解决方案 »

  1.   

    请问一下能不能获取当前Series1下标的最大值,当超过设定的显示点数时,将第一个删除后再添加坐标值呢,或者将所有坐标值前移一位再添加
      

  2.   

    用了一个很笨的办法解决了,当Series数据超出时,将Series中1至最后一个点的Y坐标值保存,然后用Series.Clear,再将保存的值赋给Series中的0到最大值-1,然后再添加一个新的值就可以了。                if Series1.LastValueIndex>=Chart1.BottomAxis.Maximum-1 then
                    begin                  SeriesIndexTmp:=0;
                      while SeriesIndexTmp<Chart1.BottomAxis.Maximum-1 do
                      begin
                        Series1Yvalue[SeriesIndexTmp]:=Series1.YValue[SeriesIndexTmp+1];
                        SeriesIndexTmp:=SeriesIndexTmp+1;
                      end;                  Series1.Clear;
                      SeriesIndexTmp:=0;
                      while SeriesIndexTmp<Chart1.BottomAxis.Maximum-1 do
                      begin
                        Series1.ADD(Series1Yvalue[SeriesIndexTmp],'',clBlue);
                        SeriesIndexTmp:=SeriesIndexTmp+1;
                      end;                end;                Series1.ADD(datarx32,'',clBlue);