home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / AddOns / Components / TEECHART / Delphi1_And_Delphi2 / EXAMPLES / EXTENDED / MOVINAVE.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-24  |  4.3 KB  |  137 lines

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { Moving Averages Series Type Demo            }
  4. { Copyright (c) 1995-1996 by David Berneda    }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit Movinave;
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, Chart, Series, ExtCtrls, StatChar, StdCtrls, Spin,
  14.   Teengine, Buttons, Curvfitt, TeeProcs;
  15.  
  16. type
  17.   TMovingAveForm = class(TForm)
  18.     Chart1: TChart;
  19.     PriceLine: TLineSeries;
  20.     Panel1: TPanel;
  21.     CheckBox1: TCheckBox;
  22.     Timer1: TTimer;
  23.     Label1: TLabel;
  24.     SpinEdit1: TSpinEdit;
  25.     Label2: TLabel;
  26.     SpinEdit2: TSpinEdit;
  27.     Label3: TLabel;
  28.     SpinEdit3: TSpinEdit;
  29.     CheckBox3: TCheckBox;
  30.     BitBtn3: TBitBtn;
  31.     BitBtn1: TBitBtn;
  32.     CurveFittingSeries1: TLineSeries;
  33.     TeeFunction1: TCurveFittingFunction;
  34.     MovingAverageSeries1: TLineSeries;
  35.     MovingAverageFunction1: TMovingAverageFunction;
  36.     ExpAverageSeries1: TLineSeries;
  37.     ExpAverageFunction1: TExpAverageFunction;
  38.     MovingAverageSeries2: TLineSeries;
  39.     MovingAverageFunction2: TMovingAverageFunction;
  40.     procedure FormCreate(Sender: TObject);
  41.     procedure CheckBox1Click(Sender: TObject);
  42.     procedure Timer1Timer(Sender: TObject);
  43.     procedure SpinEdit1Change(Sender: TObject);
  44.     procedure SpinEdit2Change(Sender: TObject);
  45.     procedure SpinEdit3Change(Sender: TObject);
  46.     procedure CheckBox3Click(Sender: TObject);
  47.     procedure BitBtn1Click(Sender: TObject);
  48.   private
  49.     { Private declarations }
  50.   public
  51.     { Public declarations }
  52.   end;
  53.  
  54. implementation
  55.  
  56. {$R *.DFM}
  57.  
  58. Uses EditChar,CustEdit; { <-- for Chart & Series Editing }
  59.  
  60. procedure TMovingAveForm.FormCreate(Sender: TObject);
  61. begin
  62.   With MovingAverageSeries1 do RecalcOptions:=RecalcOptions-[rOnDelete];
  63.   With MovingAverageSeries2 do RecalcOptions:=RecalcOptions-[rOnDelete];
  64.   PriceLine.FillSampleValues(200); { <-- Some random points }
  65. end;
  66.  
  67. procedure TMovingAveForm.CheckBox1Click(Sender: TObject);
  68. begin
  69.   Timer1.Enabled:=CheckBox1.Checked; { <-- animation on / off }
  70. end;
  71.  
  72. procedure TMovingAveForm.Timer1Timer(Sender: TObject);
  73. begin
  74.   Timer1.Enabled:=False;
  75.   With PriceLine do
  76.   Begin
  77.     Delete(0); { <-- remove the first point }
  78.     { If the MovingAverage RecalcOptions property contains the [rOnDelete]
  79.       recalc option, then MovingAverage will be cleared and recalculated.
  80.       If not, we should manually remove the first MovingAverage point.
  81.     }
  82.     if not (rOnDelete in MovingAverageSeries1.RecalcOptions) then
  83.        MovingAverageSeries1.Delete(0);
  84.     if not (rOnDelete in MovingAverageSeries2.RecalcOptions) then
  85.        MovingAverageSeries2.Delete(0);
  86.     { Add a new random point }
  87.     AddXY( XValues.Last+1,
  88.            YValues.Last+(Random(ChartSamplesMax)-(ChartSamplesMax/2)),
  89.            '',clTeeColor);
  90.  
  91.     { Recalculate Averages }
  92.     RefreshSeries;
  93.   end;
  94.   Timer1.Enabled:=True;
  95. end;
  96.  
  97. procedure TMovingAveForm.SpinEdit1Change(Sender: TObject);
  98. begin
  99.   MovingAverageSeries1.FunctionType.Period:=SpinEdit1.Value; { <-- change moving period }
  100. end;
  101.  
  102. procedure TMovingAveForm.SpinEdit2Change(Sender: TObject);
  103. begin
  104.   MovingAverageSeries2.FunctionType.Period:=SpinEdit2.Value; { <-- change moving period }
  105. end;
  106.  
  107. procedure TMovingAveForm.SpinEdit3Change(Sender: TObject);
  108. begin
  109.   ExpAverageFunction1.Weight:=(SpinEdit3.Value/100.0); { <-- change exponential weight }
  110. end;
  111.  
  112. procedure TMovingAveForm.CheckBox3Click(Sender: TObject);
  113. begin
  114.   Chart1.View3d:=CheckBox3.Checked;
  115.   Chart1.AxisVisible:=not CheckBox3.Checked;
  116.   Chart1.View3dWalls:=not CheckBox3.Checked;
  117.   Chart1.Chart3dPercent:=20;
  118.   Chart1.ClipPoints:=not CheckBox3.Checked;
  119.   Chart1.Frame.Visible:=not CheckBox3.Checked;
  120.   Chart1.Title.Visible:=not CheckBox3.Checked;
  121.   Chart1.Foot.Visible:=not CheckBox3.Checked;
  122.   Chart1.Gradient.Visible:=CheckBox3.Checked;
  123.   if CheckBox3.Checked then
  124.      Chart1.Legend.Alignment:=laLeft
  125.   else
  126.      Chart1.Legend.Alignment:=laBottom;
  127.   Chart1.UndoZoom;
  128.   if CheckBox3.Checked then CheckBox1.Checked:=True;
  129. end;
  130.  
  131. procedure TMovingAveForm.BitBtn1Click(Sender: TObject);
  132. begin
  133.   EditChart(Self,Chart1); { <-- Quite simple }
  134. end;
  135.  
  136. end.
  137.