根据radiogroup里的item,使dbchart自动产生lineseries或者pieseries怎么做?

解决方案 »

  1.   

    var
      aa:tlineseries;
      bb:tpieseries;
    begin
      aa:=tlineseries.create(self);
      bb:=tpieseries.create(self);
      aa.xvaluelabel:=...
      aa.yvaluelabel:=...
      aa.active:=true;end;
      

  2.   

    那如何连接数据库呢?如果是pieseries的话。
      

  3.   

    给你个Demoprocedure TfmDate.Button1Click(Sender: TObject);
    var
      i:integer;
    begin
      if Assigned(barseries) then
      begin
        DBChart1.FreeAllSeries;
      end;
      DBChart1.Title.Text.Clear;
      DBChart1.Title.Text.Add('每日话务量统计(小时)') ;
      DBChart1.BottomAxis.Increment := DateTimeStep[ dtOneHour ] ;
      try
        query1.close;
        query1.DatabaseName:=Form1.DatabaseName1;
        query1.Sql.Clear;
        query1.Sql.Add('select count(*) as times, datepart(hour,Time_In) as X from CallDetail where DATEDIFF(day,Time_In,:pmDate)=0 group by datepart(hour,Time_In) order by datepart(hour,Time_In)' );
        query1.ParamByName('pmDate').AsDate:=DateTimePicker1.Date;
        query1.Prepared := True;
        query1.Open;
        Query1.First;
        i:=0;
        while i<24 do
        begin
          BarSeries:=Tbarseries.Create(self);
          BarSeries.ParentChart:=DBChart1;
          BarSeries.CustomBarWidth:=20;
          BarSeries.SeriesColor:=clAqua;
          if checkbox1.Checked = true then
             DBChart1.View3D:=True
          else
             DBChart1.View3D:=false;
          if checkbox2.Checked = true then
             barseries.Marks.Visible:=true
          else
             barseries.Marks.Visible:=false;
          if checkbox3.Checked = true then
             barseries.VertAxis:=aBothVertAxis
          else
             barseries.VertAxis:=aLeftAxis;
          if checkbox5.Checked = true then
             BarSeries.BarBrush.Style:=bsFDiagonal
          else
             BarSeries.BarBrush.Style:=bsClear;
          BarSeries.BarStyle := bsRectGradient ;
          DBChart1.Series[i].SeriesColor:=intColor;
          DBChart1.BackColor:=clGray;
          BarSeries.Cursor:=crCross;
          self.DBChart1.AddSeries(barseries);
          if (Query1.FieldByName('X').AsInteger<>i) then
          begin
            barseries.Add(0,'0');
          end
          else
          begin
            barseries.Add(Query1.FieldValues['times'],IntToStr(Query1.FieldValues['times']));
            query1.Next;
          end;
          DBChart1.Legend.Visible:=true;
          i:=i+1;
          if (i=1) and (count=0) then
          begin
            count:=1;
            DBChart1.FreeAllSeries;
            i:=0;
          end;
        end;
      except
        exit;
      end;
    end;
      

  4.   

    pieseries的写法和barseries的一样吗?
      

  5.   

    不一样 pie没有横纵坐标  只有所占比例
      

  6.   

    自己用过程来做,我写了:
    procedure GenerateSeries(MySeries:tcustomseries;MyDBChart:tdbchart);我想根据不同的选择分别生成barseries、pieseries,但不知道tcustomseries是不是他们的基类?如果是,要生成不同的series,tcustomseries里用的是什么方法?