已实现,方法如下,如需例程请向我索取:流星 [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;
var tmp : TChartSeries; begin tmp := Series1; ChangeSeriesType(tmp,TChartSeriesClass(TPieSeries)); end;
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));??
由于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;
begin
tmp := Series1;
ChangeSeriesType(tmp,TChartSeriesClass(TPieSeries));
end;