好像只能删除当前SERIES,再重新建立新类型的SERIES,并填充数据。

解决方案 »

  1.   

    动态加入SERIES[0]中数据:
      Chart1.Series[0].AddY(12, '2001-01');
      Chart1.Series[0].AddY(18, '2001-02');
      Chart1.Series[0].AddY(10, '2001-03');
      

  2.   

    一下是我从原来做过的项目中原样截取的一个过程,应该对你有帮助的。
    procedure TMainForm.ShowChartData(SeriesType: Integer; Show3D, ShowMark: Integer);
    var
      LineSeries0, LineSeries1 : TLineSeries;
      BarSeries0, BarSeries1 : TBarSeries;
      PieSeries0, PieSeries1 : TPieSeries;
    begin
      Chart1.FreeAllSeries;  case SeriesType of
        0: //Bar
          begin
            Chart1.View3DOptions.Orthogonal := True;        BarSeries0 := TBarSeries.Create(Self);
            BarSeries0.Marks.Style := smsValue;
            BarSeries0.ParentChart := Chart1;
            BarSeries0.Marks.Visible := (ShowMark = 1);
            BarSeries0.Active := FShowSeries0;
            Chart1.AddSeries(BarSeries0);        BarSeries1 := TBarSeries.Create(Self);
            BarSeries1.Marks.Style := smsValue;
            BarSeries1.ParentChart := Chart1;
            BarSeries1.Marks.Visible := (ShowMark = 1);
            BarSeries1.Active := FShowSeries1;
            Chart1.AddSeries(BarSeries1);
          end;
        1: //Line
          begin
            Chart1.View3DOptions.Orthogonal := True;        LineSeries0 := TLineSeries.Create(Self);
            LineSeries0.Marks.Style := smsValue;
            LineSeries0.ParentChart := Chart1;
            LineSeries0.Marks.Visible := (ShowMark = 1);
            LineSeries0.Active := FShowSeries0;
            Chart1.AddSeries(LineSeries0);        LineSeries1 := TLineSeries.Create(Self);
            LineSeries1.Marks.Style := smsValue;
            LineSeries1.ParentChart := Chart1;
            LineSeries1.Marks.Visible := (ShowMark = 1);
            LineSeries1.Active := FShowSeries1;
            Chart1.AddSeries(LineSeries1);
          end;
        2: //Pie
          begin
            if FShowSeries0 and FShowSeries1 then
              FShowSeries1 := False;        PieSeries0 := TPieSeries.Create(Self);
            PieSeries0.Marks.Style := smsLabelPercent;
            PieSeries0.ParentChart := Chart1;
            PieSeries0.Marks.Visible := (ShowMark = 1);
            PieSeries0.Active := FShowSeries0;
            Chart1.AddSeries(PieSeries0);        PieSeries1 := TPieSeries.Create(Self);
            PieSeries1.Marks.Style := smsLabelPercent;
            PieSeries1.ParentChart := Chart1;
            PieSeries1.Marks.Visible := (ShowMark = 1);
            PieSeries1.Active := FShowSeries1;
            Chart1.AddSeries(PieSeries1);
          end;
      end;  with MainDataModule.cdsChartData do
      begin
        First;
        while not Eof do
        begin
          Chart1.Series[0].AddY(FieldByName('TruckNum').AsInteger, FieldByName('Name').AsString);
          Chart1.Series[1].AddY(FieldByName('CntrNum').AsInteger, FieldByName('Name').AsString);
          Next;
        end;
      end;  if Show3D = 1 then
        Chart1.View3D := True
      else
        Chart1.View3D := False;
    end;
      

  3.   

    我用的TeeChart版本为TeeChart Pro V5.02.