我正在使用快速报告4.13.1。我需要在我的摘要带上显示一些图表,并且我试图在乐队的OnBeforePrint
事件处理程序中动态创建它们。问题是,在正确创建图表的同时,系列不会显示我正在添加的数据。这是我的OnBeforePrint
事件:
var
dsSections,
dsTests,
dsHistory: TfrxDataSet;
Chart: TfrxChartView;
ChartCount: Integer;
begin
dsSections := Report.GetDataSet('frdTestSections');
dsTests := Report.GetDataSet('frdResults');
dsHistory := Report.GetDataSet('frdTestHistory');
ChartCount := 0;
dsSections.First;
while not dsSections.Eof do
begin
dsTests.First;
while not dsTests.Eof do
begin
if dsHistory.RecordCount > 0 then
begin
Chart := TfrxChartView.Create(rsHistory);
Chart.Left := (ChartCount mod 2) * 8 + 1;
Chart.Top := (ChartCount div 2) * 5 + 0.5;
Chart.Width := 8;
Chart.Height := 5;
Chart.Chart.Title.Text.Text := dsTests.Value('Name');
Chart.Chart.View3D := False;
Chart.AddSeries(csLine);
dsHistory.First;
while not dsHistory.Eof do
begin
ShowMessage(dsTests.Value('Name') + #13#10 + IntToStr(dsHistory.RecNo + 1) + ' ' +dsHistory.Value('Result')); // this is for debugging only
Chart.Series[0].Add(dsHistory.Value('Result'), IntToStr(dsHistory.RecNo + 1), clBlue);
dsHistory.Next;
end;
Inc(ChartCount);
end;
dsTests.Next;
end;
dsSections.Next;
end;
end;
我错过了什么?是否有TfrxChartView
的任何属性我应该设置我正在省略?
答案 0 :(得分:2)
创建Series[0]
后,您的代码遗漏了一些设置:
Datatype
媒体资源,用于确定其数据是来自dtDBData
,dtBandData
还是dtFixedData
。
DataSet
属性DataBand
属性XSource
和YSource
属性Active
属性答案 1 :(得分:1)
您可以使用SeriesData的XValues和YValues而不是 Chart.Series [0] .Add
//.....
while not dsHistory.Eof do
begin
Chart.SeriesData[0].XValues := Chart.SeriesData[0].XValues + IntToStr(dsHistory.RecNo + 1) + ';';
Chart.SeriesData[0].YValues := Chart.SeriesData[0].YValues + FloatToStr(dsHistory.Value('Result')) + ';';
dsHistory.Next;
end;
//.....