home *** CD-ROM | disk | FTP | other *** search
- {*********************************************}
- { TeeChart Delphi Component Library }
- { Moving Averages Series Type Demo }
- { Copyright (c) 1995-1996 by David Berneda }
- { All rights reserved }
- {*********************************************}
- unit Movinave;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, Chart, Series, ExtCtrls, StatChar, StdCtrls, Spin,
- Teengine, Buttons, Curvfitt, TeeProcs;
-
- type
- TMovingAveForm = class(TForm)
- Chart1: TChart;
- PriceLine: TLineSeries;
- Panel1: TPanel;
- CheckBox1: TCheckBox;
- Timer1: TTimer;
- Label1: TLabel;
- SpinEdit1: TSpinEdit;
- Label2: TLabel;
- SpinEdit2: TSpinEdit;
- Label3: TLabel;
- SpinEdit3: TSpinEdit;
- CheckBox3: TCheckBox;
- BitBtn3: TBitBtn;
- BitBtn1: TBitBtn;
- CurveFittingSeries1: TLineSeries;
- TeeFunction1: TCurveFittingFunction;
- MovingAverageSeries1: TLineSeries;
- MovingAverageFunction1: TMovingAverageFunction;
- ExpAverageSeries1: TLineSeries;
- ExpAverageFunction1: TExpAverageFunction;
- MovingAverageSeries2: TLineSeries;
- MovingAverageFunction2: TMovingAverageFunction;
- procedure FormCreate(Sender: TObject);
- procedure CheckBox1Click(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure SpinEdit1Change(Sender: TObject);
- procedure SpinEdit2Change(Sender: TObject);
- procedure SpinEdit3Change(Sender: TObject);
- procedure CheckBox3Click(Sender: TObject);
- procedure BitBtn1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- implementation
-
- {$R *.DFM}
-
- Uses EditChar,CustEdit; { <-- for Chart & Series Editing }
-
- procedure TMovingAveForm.FormCreate(Sender: TObject);
- begin
- With MovingAverageSeries1 do RecalcOptions:=RecalcOptions-[rOnDelete];
- With MovingAverageSeries2 do RecalcOptions:=RecalcOptions-[rOnDelete];
- PriceLine.FillSampleValues(200); { <-- Some random points }
- end;
-
- procedure TMovingAveForm.CheckBox1Click(Sender: TObject);
- begin
- Timer1.Enabled:=CheckBox1.Checked; { <-- animation on / off }
- end;
-
- procedure TMovingAveForm.Timer1Timer(Sender: TObject);
- begin
- Timer1.Enabled:=False;
- With PriceLine do
- Begin
- Delete(0); { <-- remove the first point }
- { If the MovingAverage RecalcOptions property contains the [rOnDelete]
- recalc option, then MovingAverage will be cleared and recalculated.
- If not, we should manually remove the first MovingAverage point.
- }
- if not (rOnDelete in MovingAverageSeries1.RecalcOptions) then
- MovingAverageSeries1.Delete(0);
- if not (rOnDelete in MovingAverageSeries2.RecalcOptions) then
- MovingAverageSeries2.Delete(0);
- { Add a new random point }
- AddXY( XValues.Last+1,
- YValues.Last+(Random(ChartSamplesMax)-(ChartSamplesMax/2)),
- '',clTeeColor);
-
- { Recalculate Averages }
- RefreshSeries;
- end;
- Timer1.Enabled:=True;
- end;
-
- procedure TMovingAveForm.SpinEdit1Change(Sender: TObject);
- begin
- MovingAverageSeries1.FunctionType.Period:=SpinEdit1.Value; { <-- change moving period }
- end;
-
- procedure TMovingAveForm.SpinEdit2Change(Sender: TObject);
- begin
- MovingAverageSeries2.FunctionType.Period:=SpinEdit2.Value; { <-- change moving period }
- end;
-
- procedure TMovingAveForm.SpinEdit3Change(Sender: TObject);
- begin
- ExpAverageFunction1.Weight:=(SpinEdit3.Value/100.0); { <-- change exponential weight }
- end;
-
- procedure TMovingAveForm.CheckBox3Click(Sender: TObject);
- begin
- Chart1.View3d:=CheckBox3.Checked;
- Chart1.AxisVisible:=not CheckBox3.Checked;
- Chart1.View3dWalls:=not CheckBox3.Checked;
- Chart1.Chart3dPercent:=20;
- Chart1.ClipPoints:=not CheckBox3.Checked;
- Chart1.Frame.Visible:=not CheckBox3.Checked;
- Chart1.Title.Visible:=not CheckBox3.Checked;
- Chart1.Foot.Visible:=not CheckBox3.Checked;
- Chart1.Gradient.Visible:=CheckBox3.Checked;
- if CheckBox3.Checked then
- Chart1.Legend.Alignment:=laLeft
- else
- Chart1.Legend.Alignment:=laBottom;
- Chart1.UndoZoom;
- if CheckBox3.Checked then CheckBox1.Checked:=True;
- end;
-
- procedure TMovingAveForm.BitBtn1Click(Sender: TObject);
- begin
- EditChart(Self,Chart1); { <-- Quite simple }
- end;
-
- end.
-