home *** CD-ROM | disk | FTP | other *** search
- {*********************************************}
- { TeeChart Delphi Component Library }
- { Curve Fitting Series Type Demo }
- { Copyright (c) 1995-1996 by David Berneda }
- { All rights reserved }
- {*********************************************}
- unit Curvfit;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, Chart, Series, ExtCtrls, StatChar, StdCtrls, Curvfitt,
- Spin, Teengine, Buttons, TeeProcs, TeeComma;
-
- type
- TCurveFittingForm = class(TForm)
- Chart1: TChart;
- StockPrice: TLineSeries;
- Panel1: TPanel;
- CheckBox1: TCheckBox;
- Timer1: TTimer;
- SpinEdit1: TSpinEdit;
- Label1: TLabel;
- SpinEdit2: TSpinEdit;
- Label2: TLabel;
- CheckBox3: TCheckBox;
- BitBtn3: TBitBtn;
- CBInvertAxis: TCheckBox;
- Label3: TLabel;
- CBOnlyZoomed: TCheckBox;
- CurveFittingSeries1: TLineSeries;
- CurveFittingFunction1: TCurveFittingFunction;
- CurveFittingSeries2: TLineSeries;
- CurveFittingFunction2: TCurveFittingFunction;
- TeeCommander1: TTeeCommander;
- procedure FormCreate(Sender: TObject);
- procedure CheckBox1Click(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure SpinEdit1Change(Sender: TObject);
- procedure SpinEdit2Change(Sender: TObject);
- procedure Chart1Zoom(Sender: TObject);
- procedure CBOnlyZoomedClick(Sender: TObject);
- procedure CheckBox3Click(Sender: TObject);
- procedure CBInvertAxisClick(Sender: TObject);
- procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure BitBtn3Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- implementation
-
- {$R *.DFM}
-
- Uses EditChar,CustEdit; { <-- for Chart & Series Editing }
-
- procedure TCurveFittingForm.FormCreate(Sender: TObject);
- begin
- Label3.Caption:='';
- CurveFittingSeries1.RecalcOptions:=[rOnInsert,rOnClear];
- StockPrice.FillSampleValues(200); { <-- Some random points }
- end;
-
- procedure TCurveFittingForm.CheckBox1Click(Sender: TObject);
- begin
- Timer1.Enabled:=CheckBox1.Checked; { <-- on / off animation }
- end;
-
- procedure TCurveFittingForm.Timer1Timer(Sender: TObject);
- begin
- Timer1.Enabled:=False; { <-- stop timer }
- With StockPrice do
- Begin
- Delete(0); { <-- remove the first point }
- { Add a new random point }
- AddXY( XValues.Last+1,
- (YValues.Last/YValues.Multiplier)+(Random(ChartSamplesMax)-(ChartSamplesMax/2)),
- '',clTeeColor);
- Chart1Zoom(Self); { <-- recalculate Curve !!!! }
- end;
- Timer1.Enabled:=True; { <-- restart timer }
- end;
-
- procedure TCurveFittingForm.SpinEdit1Change(Sender: TObject);
- begin
- CurveFittingFunction1.PolyDegree:=SpinEdit1.Value; { <-- set poly fitting degree }
- end;
-
- procedure TCurveFittingForm.SpinEdit2Change(Sender: TObject);
- begin
- StockPrice.YValues.Multiplier:=SpinEdit2.Value;
- end;
-
- procedure TCurveFittingForm.Chart1Zoom(Sender: TObject);
- begin
- if CBOnlyZoomed.Checked then
- Begin
- if StockPrice.FirstValueIndex>0 then
- CurveFittingFunction1.FirstPoint:=StockPrice.FirstValueIndex-1
- else
- CurveFittingFunction1.FirstPoint:=StockPrice.FirstValueIndex;
- CurveFittingFunction1.LastPoint:=StockPrice.LastValueIndex;
- end
- else
- Begin
- CurveFittingFunction1.FirstPoint:=-1;
- CurveFittingFunction1.LastPoint:=-1;
- end;
- CurveFittingSeries1.CheckDataSource; { <-- fill agains the points }
- CurveFittingSeries2.CheckDataSource; { <-- fill agains the points }
- end;
-
- procedure TCurveFittingForm.CBOnlyZoomedClick(Sender: TObject);
- begin
- Chart1Zoom(Self)
- end;
-
- procedure TCurveFittingForm.CheckBox3Click(Sender: TObject);
- begin
- Chart1.View3D:=CheckBox3.Checked;
- end;
-
- procedure TCurveFittingForm.CBInvertAxisClick(Sender: TObject);
- begin
- Chart1.LeftAxis.Inverted:=CBInvertAxis.Checked;
- end;
-
- procedure TCurveFittingForm.Chart1MouseMove(Sender: TObject;
- Shift: TShiftState; X, Y: Integer);
- var tmp:Longint;
- begin
- { Show Price where mouse is at }
- tmp:=StockPrice.Clicked(x,y);
- if tmp=-1 then Label3.Caption:=''
- else Label3.Caption:=StockPrice.ValueMarkText[tmp];
- end;
-
- procedure TCurveFittingForm.BitBtn3Click(Sender: TObject);
- begin
- Close;
- end;
-
- end.
-