uses frxClass, frxChart, Series;
var
page: TfrxPage;
band1: TfrxPageHeader;
charView1: TfrxChartView;
pieSerial: TPieSeries;
begin
inherited;
page:=frxReport1.Pages[0];
band1:=TfrxPageHeader.Create(page);
band1.CreateUniqueName;
band1.Height:=page.Height;
// band := TfrBandView.Create;
band1.SetBounds(0, 0, page.Width, page.Height - 100);
charView1:=TfrxChartView.Create(band1);
charView1.CreateUniqueName;
charView1.Height:=page.Height - 100;
charView1.Width:=page.Width - 100;
// band := TfrBandView.Create;
charView1.SetBounds(18, 18, page.Width - 100, 600);
pieSerial:=TPieSeries.Create(charView1);
//pieSerial.ParentChart:=charView1.Chart;
charView1.Chart.AddSeries(pieSerial);
with charView1.SeriesData.Add do // 注意,这行必须加,否则在设计时,点图象即出 List index out of bounds (0) 的异常,浪费了我挺多时间
begin
DataType := dtDBData;
XSource := 数据集名称变量
+ '.'
+ AnsiQuotedStr(X轴字段名, '"');
YSource := 数据集名称变量
+ '.'
+ AnsiQuotedStr(Y轴字段名, '"');
DataSet:=frxReport1.GetDataset(数据集名称变量); // 如果是动态添加数据集,则写法有所不同
end;
/// 动态添加数据集
var
DataSource: TDataSource;
frxDBDataSet: TfrxDBDataset;
begin
DataSource:=TDataSource.Create(nil);
frxDBDataSet:=TfrxDBDataset.Create(nil);
frxDBDataSet.DataSource:=DataSource;
DataSource.DataSet:=从天上掉或是动态创建都是可以的;
// 接上面数据变动的处理代码
with charView1.SeriesData.Add do
begin
DataType := dtDBData;
XSource := 数据集名称变量
+ '.'
+ AnsiQuotedStr(X轴字段名, '"');
YSource := 数据集名称变量
+ '.'
+ AnsiQuotedStr(Y轴字段名, '"');
DataSet:=frxDBDataSet; // 如果是动态添加数据集,则写法有所不同
end;
end;