8
ExtCtrls, StdCtrls, Forms, TAGraph, TASeries, TASources;
8
ComCtrls, ExtCtrls, Spin, StdCtrls, Forms, TAGraph, TASeries, TASources,
14
15
TForm1 = class(TForm)
16
cbAccDirDerivative: TComboBox;
17
ccsDerivative: TCalculatedChartSource;
18
cbCumulative: TCheckBox;
19
ccsAvg: TCalculatedChartSource;
20
ccsSum: TCalculatedChartSource;
16
22
Chart1BarSeries1: TBarSeries;
17
23
Chart1LineSeries1: TLineSeries;
24
chDerivativeLineOrig: TLineSeries;
25
chDerivativeLineDeriv: TLineSeries;
26
Chart1LineSeries4: TLineSeries;
27
Chart1LineSeries5: TLineSeries;
19
29
Chart2AreaSeries1: TAreaSeries;
20
30
Chart2LineSeries1: TLineSeries;
33
chCalcLineSeries1: TLineSeries;
34
chCalcLineSeriesAvg: TLineSeries;
35
chCalcLineSeriesSum: TLineSeries;
36
cbAccDirStatistics: TComboBox;
38
seAccumulationRange: TSpinEdit;
39
lblAccumulationRange: TLabel;
21
40
ListChartSource1: TListChartSource;
41
lcsDerivative: TListChartSource;
43
PageControl1: TPageControl;
46
rgDataShape: TRadioGroup;
23
47
RandomChartSource1: TRandomChartSource;
48
RandomChartSource2: TRandomChartSource;
24
49
Splitter1: TSplitter;
50
tsDerivative: TTabSheet;
51
tsStatistics: TTabSheet;
53
procedure cbAccDirDerivativeChange(Sender: TObject);
54
procedure cbAccDirStatisticsChange(Sender: TObject);
55
procedure cbCumulativeChange(Sender: TObject);
56
procedure cbSmoothChange(Sender: TObject);
58
procedure seAccumulationRangeChange(Sender: TObject);
59
procedure FormCreate(Sender: TObject);
60
procedure rgDataShapeClick(Sender: TObject);
75
procedure TForm1.cbAccDirDerivativeChange(Sender: TObject);
77
ccsDerivative.AccumulationDirection :=
78
TChartAccumulationDirection(cbAccDirDerivative.ItemIndex);
81
procedure TForm1.cbAccDirStatisticsChange(Sender: TObject);
83
ccsAvg.AccumulationDirection :=
84
TChartAccumulationDirection(cbAccDirStatistics.ItemIndex);
85
ccsSum.AccumulationDirection := ccsAvg.AccumulationDirection;
88
procedure TForm1.cbCumulativeChange(Sender: TObject);
90
chCalcLineSeriesSum.Active := cbCumulative.Checked;
93
procedure TForm1.cbSmoothChange(Sender: TObject);
95
if cbSmooth.Checked then
96
ccsDerivative.AccumulationMethod := camSmoothDerivative
98
ccsDerivative.AccumulationMethod := camDerivative;
101
procedure TForm1.CreateData;
112
if rgDataShape.ItemIndex = 6 then
114
lcsDerivative.Add(i - IfThen(i > 6, 1, 0), i)
116
for i := 0 to N - 1 do begin
117
x := MIN_X + (MAX_X - MIN_X) / (N - 1) * i;
118
if SameValue(x, 0.0, EPS) then x := 0;
119
case rgDataShape.ItemIndex of
122
2: if x = 0 then y := 1 else y := Sin(x) / x;
124
4: y := Exp(-Sqr((x - 2.5) / 2.5));
125
5: y := Exp(-Sqr((x - 2.5) / 2.5)) + 0.05 * (Random - 0.5);
127
lcsDerivative.Add(x, y);
131
procedure TForm1.FormCreate(Sender: TObject);
137
procedure TForm1.rgDataShapeClick(Sender: TObject);
142
procedure TForm1.seAccumulationRangeChange(Sender: TObject);
144
ccsDerivative.AccumulationRange := seAccumulationRange.Value;