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

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { Curve Fitting Series Type Demo              }
  4. { Copyright (c) 1995-1996 by David Berneda    }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit Curvfit;
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, Chart, Series, ExtCtrls, StatChar, StdCtrls, Curvfitt,
  14.   Spin, Teengine, Buttons, TeeProcs, TeeComma;
  15.  
  16. type
  17.   TCurveFittingForm = class(TForm)
  18.     Chart1: TChart;
  19.     StockPrice: TLineSeries;
  20.     Panel1: TPanel;
  21.     CheckBox1: TCheckBox;
  22.     Timer1: TTimer;
  23.     SpinEdit1: TSpinEdit;
  24.     Label1: TLabel;
  25.     SpinEdit2: TSpinEdit;
  26.     Label2: TLabel;
  27.     CheckBox3: TCheckBox;
  28.     BitBtn3: TBitBtn;
  29.     CBInvertAxis: TCheckBox;
  30.     Label3: TLabel;
  31.     CBOnlyZoomed: TCheckBox;
  32.     CurveFittingSeries1: TLineSeries;
  33.     CurveFittingFunction1: TCurveFittingFunction;
  34.     CurveFittingSeries2: TLineSeries;
  35.     CurveFittingFunction2: TCurveFittingFunction;
  36.     TeeCommander1: TTeeCommander;
  37.     procedure FormCreate(Sender: TObject);
  38.     procedure CheckBox1Click(Sender: TObject);
  39.     procedure Timer1Timer(Sender: TObject);
  40.     procedure SpinEdit1Change(Sender: TObject);
  41.     procedure SpinEdit2Change(Sender: TObject);
  42.     procedure Chart1Zoom(Sender: TObject);
  43.     procedure CBOnlyZoomedClick(Sender: TObject);
  44.     procedure CheckBox3Click(Sender: TObject);
  45.     procedure CBInvertAxisClick(Sender: TObject);
  46.     procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  47.       Y: Integer);
  48.     procedure BitBtn3Click(Sender: TObject);
  49.   private
  50.     { Private declarations }
  51.   public
  52.     { Public declarations }
  53.   end;
  54.  
  55. implementation
  56.  
  57. {$R *.DFM}
  58.  
  59. Uses EditChar,CustEdit; { <-- for Chart & Series Editing }
  60.  
  61. procedure TCurveFittingForm.FormCreate(Sender: TObject);
  62. begin
  63.   Label3.Caption:='';
  64.   CurveFittingSeries1.RecalcOptions:=[rOnInsert,rOnClear];
  65.   StockPrice.FillSampleValues(200); { <-- Some random points }
  66. end;
  67.  
  68. procedure TCurveFittingForm.CheckBox1Click(Sender: TObject);
  69. begin
  70.   Timer1.Enabled:=CheckBox1.Checked; { <-- on / off animation }
  71. end;
  72.  
  73. procedure TCurveFittingForm.Timer1Timer(Sender: TObject);
  74. begin
  75.   Timer1.Enabled:=False; { <-- stop timer }
  76.   With StockPrice do
  77.   Begin
  78.     Delete(0); { <-- remove the first point }
  79.     { Add a new random point }
  80.     AddXY( XValues.Last+1,
  81.            (YValues.Last/YValues.Multiplier)+(Random(ChartSamplesMax)-(ChartSamplesMax/2)),
  82.            '',clTeeColor);
  83.     Chart1Zoom(Self); { <-- recalculate Curve !!!! }
  84.   end;
  85.   Timer1.Enabled:=True; { <-- restart timer }
  86. end;
  87.  
  88. procedure TCurveFittingForm.SpinEdit1Change(Sender: TObject);
  89. begin
  90.   CurveFittingFunction1.PolyDegree:=SpinEdit1.Value; { <-- set poly fitting degree }
  91. end;
  92.  
  93. procedure TCurveFittingForm.SpinEdit2Change(Sender: TObject);
  94. begin
  95.   StockPrice.YValues.Multiplier:=SpinEdit2.Value;
  96. end;
  97.  
  98. procedure TCurveFittingForm.Chart1Zoom(Sender: TObject);
  99. begin
  100.   if CBOnlyZoomed.Checked then
  101.   Begin
  102.     if StockPrice.FirstValueIndex>0 then
  103.       CurveFittingFunction1.FirstPoint:=StockPrice.FirstValueIndex-1
  104.     else
  105.       CurveFittingFunction1.FirstPoint:=StockPrice.FirstValueIndex;
  106.     CurveFittingFunction1.LastPoint:=StockPrice.LastValueIndex;
  107.   end
  108.   else
  109.   Begin
  110.     CurveFittingFunction1.FirstPoint:=-1;
  111.     CurveFittingFunction1.LastPoint:=-1;
  112.   end;
  113.   CurveFittingSeries1.CheckDataSource; { <-- fill agains the points }
  114.   CurveFittingSeries2.CheckDataSource; { <-- fill agains the points }
  115. end;
  116.  
  117. procedure TCurveFittingForm.CBOnlyZoomedClick(Sender: TObject);
  118. begin
  119.   Chart1Zoom(Self)
  120. end;
  121.  
  122. procedure TCurveFittingForm.CheckBox3Click(Sender: TObject);
  123. begin
  124.   Chart1.View3D:=CheckBox3.Checked;
  125. end;
  126.  
  127. procedure TCurveFittingForm.CBInvertAxisClick(Sender: TObject);
  128. begin
  129.   Chart1.LeftAxis.Inverted:=CBInvertAxis.Checked;
  130. end;
  131.  
  132. procedure TCurveFittingForm.Chart1MouseMove(Sender: TObject;
  133.   Shift: TShiftState; X, Y: Integer);
  134. var tmp:Longint;
  135. begin
  136.   { Show Price where mouse is at }
  137.   tmp:=StockPrice.Clicked(x,y);
  138.   if tmp=-1 then Label3.Caption:=''
  139.             else Label3.Caption:=StockPrice.ValueMarkText[tmp];
  140. end;
  141.  
  142. procedure TCurveFittingForm.BitBtn3Click(Sender: TObject);
  143. begin
  144.   Close;
  145. end;
  146.  
  147. end.
  148.