Drop a Chart onto the section where you want the Chart to show. If manually adding points, use a Chart - if you want to populate 

from a datapipeline, use a DBChart

Next, go to the appropriate subreport where the tee chart is and select:
View-->Module

Under Global-->Declarations-->Variables - add your series type:

Var
FLineSeries: TLineSeries;

Other Class Options:

TPieSeries, TCircledSeries, TAreaSeries, TBarSeries, TFastLineSeries, THorizBarSeries, TPointSeries


If Manually Filling Data - do this:

Under Global-->Events-->OnCreate (you must at least create it here, you can fill it in other areas if you want)

FLineSeries := TLineSeries.Create(nil);

FLineSeries.ParentChart := TeeChart1.Chart;
FLineSeries.Clear;
FLineSeries.Add( 30, 'Dynastar', clYellow);
FLineSeries.Add( 45, 'Salomon', clBlue);


If Filling Data from a Data Pipeline - do this:

Under Global-->Events-->OnCreate


FLineSeries := TLineSeries.Create(nil);

FLineSeries.ParentChart := DPTeeChart1.Chart;
FLineSeries.Clear;
FLineSeries.DataSource := CalibrationTestPoints;
FLineSeries.YValueSource := 'Standard';
FLineSeries.XValueSource := 'As Found';

last, be sure to free your Series:

Under Global-->Evens-->OnDestroy

FLineSeries.Free;


You can also access a Chart Series in RAP that has been pre-created by using a format similar to this:

CalChart.Chart.Series[0].Add(0.2,'May', clRed);

Where CalChart is the name of the Chart object in this case.

Here is another example Referencing an existing chart where the series were pre-created:

Var
sX, sY : String;
i1, i2, i3 : Integer;
dX, dY : Double;
dCalcOutput, dError, dRange, dAccuracy : Double;
bR1, bR2 : boolean;
begin
CalChart.Chart.Series[0].Clear;
CalChart.Chart.Series[1].Clear;
CalChart.Chart.Series[2].Clear;
CalChart.Chart.Series[3].Clear;
CalChart.Chart.Series[4].Clear;
CalChart.Chart.Series[5].Clear;
CalChart.Chart.Series[6].Clear;
dR1Max := 0.0;
dR1Min := 0.0;
dR2Max := 0.0;
dR2Min := 0.0;
bR1 := False;
bR2 := False;

dAccuracy := Events['Attribute 3 - Numeric'];
dRange := Events['Attribute 1 - Numeric'];
If dRange = 0.0 then dRange := 1.0;

sX := ';
sY := ';
tdDoSQLRecords(1, 'SELECT SEQ, RESULT1, RESULT2, AV_AS_FOUND, AV_AS_LEFT FROM CALPNTS WHERE EVENT_NUM=' + Events['Event Number'] + ' ORDER BY EVENT_NUM, SEQ');
While tdEOF(1) <> '1' do
begin
If sX <> ' then sX := sX + ',';
If sY <> ' then sY := sY + ',';
dX := tdFieldByNameAsFloat(1,'RESULT1');
dY := tdFieldByNameAsFloat(1,'AV_AS_FOUND');
sX := sX + FloatToStr(dX);
sY := sY + FloatToStr(dY);
tdNext(1);
end;
tdFirst(1);
While tdEOF(1) <> '1' do
begin
If sX <> ' then sX := sX + ',';
If sY <> ' then sY := sY + ',';
dX := tdFieldByNameAsFloat(1,'RESULT2');
dY := tdFieldByNameAsFloat(1,'AV_AS_LEFT');
sX := sX + FloatToStr(dX);
sY := sY + FloatToStr(dY);
tdNext(1);
end;
dSlope := LinReg(sX, sY, 'SLOPE');
dIntercept := LinReg(sX, sY, 'INTERCEPT');

i2 := 0;
i3 := 0;
tdFirst(1);
While tdEOF(1) <> '1' do
begin
dX := tdFieldByNameAsFloat(1,'RESULT1');
dY := tdFieldByNameAsFloat(1,'AV_AS_LEFT');
dCalcOutput := dX * dSlope + dIntercept;
dError := ((dCalcOutput - dY) / dRange) * 100;
{Calculate Min/Max for Error - used later in Report}
If bR1 = False then
begin
dR1Max := dError;
dR1Min := dError;
bR1 := True;
end else
begin
If dError > dR1Max then dR1Max := dError;
If dError < dR1Min then dR1Min := dError;
end;
{This Lookup is done to breakup the 2nd section of the calibration into it's own line series when necessary}
tdDoSQLRecords(2, 'SELECT EVENT_NUM FROM CALPNTS WHERE EVENT_NUM=' + Events['Event Number'] + ' AND SEQ < ' + tdFieldByNameAsString(1,'SEQ') + ' AND AV_AS_LEFT=' + FloatToStr(dY) + ' ORDER BY EVENT_NUM, SEQ');
If tdFieldByNameAsInteger(2, 'EVENT_NUM') > 0 then
CalChart.Chart.Series[1].Add(dError, FloatToStr(dY), clRed) else
begin
CalChart.Chart.Series[0].Add(dError, FloatToStr(dY), clRed);
{These are simply the upper/lower limits with a "Zero" line also}
CalChart.Chart.Series[4].Add( dAccuracy , FloatToStr(dY), clBlack);
CalChart.Chart.Series[5].Add( (0-dAccuracy) , FloatToStr(dY), clBlack);
CalChart.Chart.Series[6].Add(0.0, FloatToStr(dY), clBlack);
end;
dX := tdFieldByNameAsFloat(1,'RESULT2');
dY := tdFieldByNameAsFloat(1,'AV_AS_FOUND');
dCalcOutput := dX * dSlope + dIntercept;
dError := ((dCalcOutput - dY) / dRange) * 100;
{Calculate Min/Max for Error - used later in Report}
If bR2 = False then
begin
dR2Max := dError;
dR2Min := dError;
bR2 := True;
end else
begin
If dError > dR2Max then dR2Max := dError;
If dError < dR2Min then dR2Min := dError;
end;
{This Lookup is done to breakup the 2nd section of the calibration into it's own line series when necessary}
tdDoSQLRecords(2, 'SELECT EVENT_NUM FROM CALPNTS WHERE EVENT_NUM=' + Events['Event Number'] + ' AND SEQ < ' + tdFieldByNameAsString(1,'SEQ') + ' AND AV_AS_FOUND=' + FloatToStr(dY) + ' ORDER BY EVENT_NUM, SEQ');
If tdFieldByNameAsInteger(2, 'EVENT_NUM') > 0 then
CalChart.Chart.Series[3].Add(dError, FloatToStr(dY), clGreen) else
CalChart.Chart.Series[2].Add(dError, FloatToStr(dY), clGreen);
tdNext(1);
end;

end;