我的问题其实很简单啊。就是想动态改变DBCHART中SERIES的样式。
比如有个COMBOBOX。当我选中饼图时,点击按钮就是饼图,选柱图的话就是柱图。感觉应该很简单,
但我就是不会写。先谢谢各位了哟^_^

解决方案 »

  1.   

    在combobox的onchange事件里给对应dbchart的series类型赋值
      

  2.   

    0: ChangeSeriesType(FSeries,TChartSeriesClass(TBarSeries));
        1: ChangeSeriesType(FSeries,TChartSeriesClass(THorizBarSeries));
        2: ChangeSeriesType(FSeries,TChartSeriesClass(TAreaSeries));
        3: ChangeSeriesType(FSeries,TChartSeriesClass(THorizAreaSeries));
        4: ChangeSeriesType(FSeries,TChartSeriesClass(TLineSeries));
        5: ChangeSeriesType(FSeries,TChartSeriesClass(THorizLineSeries));
        6: ChangeSeriesType(FSeries,TChartSeriesClass(TFastLineSeries));
        7: ChangeSeriesType(FSeries,TChartSeriesClass(TPieSeries));
        8: ChangeSeriesType(FSeries,TChartSeriesClass(TPointSeries));??
      

  3.   

    谢谢各位。BS下LY  为啥我在群里问你就不给答案哩,另:还想看看有多少淫认识我
      

  4.   

    已实现,方法如下,如需例程请向我索取:流星 [email protected]
    由于TDBChart中的Series中类型都是固定的,所以必须先把要用到的图表类别都建好,再用Radio或者其它方式如Combo来切换,我是用Radio来切换的,在Radio中的Tag中保存对应的Serie序号,所以的Radio可以共用以下方法:
    procedure TMainForm.rdoLineClick(Sender: TObject);
    var
      Index, Tag: Integer;
    begin
      Tag := TRadioButton(Sender).tag;
      if Tag > chtMain.SeriesCount - 1 then
        Tag := 0;
        
      for Index := 0 to chtMain.SeriesCount - 1 do    // Iterate
      begin
        if chtMain.Series[Index].Active then
          chtMain.Series[Index].Active := False;
      end;    // for
      chtMain.Series[Tag].Active := True;
      chtMain.Refresh;
    end;
      

  5.   

    var tmp : TChartSeries;
    begin
       tmp := Series1;
       ChangeSeriesType(tmp,TChartSeriesClass(TPieSeries));
    end;