unit main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, TAGraph, TASeries, TASources; type { TForm1 } TForm1 = class(TForm) Chart1: TChart; Chart1BarSeries1: TBarSeries; Chart1FuncSeries1: TFuncSeries; Chart1YAxis: TLine; Chart1XAxis: TLine; UserDefinedChartSource1: TUserDefinedChartSource; procedure Chart1FuncSeries1Calculate(const AX: Double; out AY: Double); procedure FormCreate(Sender: TObject); procedure UserDefinedChartSource1GetChartDataItem( ASource: TUserDefinedChartSource; AIndex: Integer; var AItem: TChartDataItem); end; var Form1: TForm1; implementation { TForm1 } procedure TForm1.Chart1FuncSeries1Calculate(const AX: Double; out AY: Double); begin AY := Sin(AX); end; procedure TForm1.FormCreate(Sender: TObject); begin Chart1FuncSeries1.OnCalculate := @Chart1FuncSeries1Calculate; UserDefinedChartSource1.OnGetChartDataItem := @UserDefinedChartSource1GetChartDataItem; end; procedure TForm1.UserDefinedChartSource1GetChartDataItem( ASource: TUserDefinedChartSource; AIndex: Integer; var AItem: TChartDataItem); begin AItem.X := AIndex - ASource.PointsNumber / 2; AItem.Y := Cos(AItem.X); end; initialization {$I main.lrs} end.