我DBchart中的series要动态生成
CDS的数据已经查好了然后我循环一边cds.eof
while not CDSTMP.Eof do
  begin
   with series do
    begin
      Marks.Callout.Brush.Color := clblack;//运行到这里会报错
    //Project ....exe raised exception class EAccessViolation with message 'Access violation at address 
   // 00403B2E in module '....exe',Read of address EADAE800',Process stopped,........
      Marks.Visible := true;
      DataSource := CDSByTool;
      XLabelsSource := 'EID';
      //Gradient.Direction := gdTopBottom;
      MultiBar := mbStacked;
      XValues.Name := 'X';
      XValues.Order := loAscending;
      YValues.Name := 'Bar';
      YValues.Order := loNone;
      YValues.ValueSource := 'A'+IntToStr(tableNum)+'.TID';
    end;
    DBChart11.AddSeries(series);
    CDSTMP.Next;
  end;
 怎么解决阿

解决方案 »

  1.   

    參考下
    一、添加Series之前,要删除已有的Series,只能从后往前删,否则出错: 
    for i:=Chart1.SeriesCount-1 downto 0  do                      begin    Chart1.Series[i].Free;  end;
    二、运行时候创建一个Series, 有多种方法。1.Var MySeries : TBarSeries ;   MySeries := TBarSeries.Create( Self );   MySeries.ParentChart := Chart1 ;     2.Chart1.AddSeries( TBarSeries.Create( Self ) );     3.Var MyClass : TChartSeriesClass;        MyClass := TBarSeries ;        Chart1.AddSeries( MyClass.Create( Self ) );
    在这里根据,用到循环结构动态添加多条Series。  for j:=0 to  NXUGMU-1 do    begin      series:=TFastLineSeries.Create(Chart1);       Chart1.AddSeries(Series);       //动态增加series      series.LinePen.Width:=2;         //设定线宽      Chart1.Series[j].Title:='速度 '+StrVelocity[j];  //动态标题      randomize;    end;
    三、在chart中画出的曲线某个点上标记出该点的值    series.Marks.Visible:=True;     Series.Marks.Style:=smsValue;四、固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化//设置底座标  with Chart1.BottomAxis do  begin    Automatic:=false;    Minimum:=0;    LabelStyle := talText;  end;
    五、添加坐标值,自动绘制曲线    Chart1.Series[j].AddXY(Xzhi,Yzhi,Label,color); 
      

  2.   


    Var MySeries : TBarSeries ;   MySeries := TBarSeries.Create( Self );   MySeries.ParentChart := Chart1 ;
    用这个方法行了
    但是
    Gradient.Direction := gdTopBottom;
    MultiBar := mbStacked;
    这俩个报错,说是没定义
    是不是还要uses什么文件
      

  3.   


    DBChart11.AddSeries(series);我的这个方法循环添加series
    为什么图表只显示了最后一个series
      

  4.   

    这个问题解决了,把DBChart11.AddSeries(series);加在循环语句里面就行了
    还有最后一个问题搞不懂就是Gradient.Direction := gdTopBottom;
    MultiBar := mbStacked;
    属性不能用为什么啊