home *** CD-ROM | disk | FTP | other *** search
- {*********************************************}
- { TeeChart Pro 4 example }
- { Copyright (c) 1995-1998 by David Berneda }
- { All rights reserved }
- {*********************************************}
- unit UPareto;
-
- interface
-
- uses
- WinTypes,WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;
-
- type
- TFormPareto = class(TForm)
- Chart1: TChart;
- Series1: TBarSeries;
- Series2: TLineSeries;
- CheckBox1: TCheckBox;
- CheckBox2: TCheckBox;
- CheckBox3: TCheckBox;
- CheckBox4: TCheckBox;
- CheckBoxPercent: TCheckBox;
- CheckBox5: TCheckBox;
- Button1: TButton;
- procedure FormCreate(Sender: TObject);
- procedure CheckBox3Click(Sender: TObject);
- procedure CheckBox2Click(Sender: TObject);
- procedure CheckBox4Click(Sender: TObject);
- procedure CheckBox1Click(Sender: TObject);
- procedure CheckBoxPercentClick(Sender: TObject);
- procedure CheckBox5Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- Procedure CalcPareto(Percent:Boolean);
- end;
-
- var
- FormPareto: TFormPareto;
-
- implementation
-
- {$R *.DFM}
-
- Procedure TFormPareto.CalcPareto(Percent:Boolean);
- var tmp:Double;
- t:Integer;
- begin
- { First order the Bar values }
- Series1.YValues.Sort;
- { Then reposition each bar in the right X }
- Series1.XValues.FillSequence;
-
- { Calculate the line points }
- Series2.Clear;
- tmp:=0;
- for t:=0 to Series1.Count-1 do
- begin
- tmp:=tmp+Series1.YValues[t];
- if Percent then
- Series2.Add( 100.0*tmp/Series1.YValues.TotalABS, '', clTeeColor)
- else
- Series2.Add( tmp, '', clTeeColor)
- end;
- end;
-
- procedure TFormPareto.FormCreate(Sender: TObject);
- var t:Integer;
- begin
- { Useful properties }
- Series2.VertAxis:=aRightAxis;
- Chart1.RightAxis.SetMinMax(0,100);
- Series1.Marks.Visible:=False;
-
- { Sample random values }
- Series1.Clear;
- for t:=0 to 7 do Series1.Add( t*100+Random(100),'', clTeeColor);
-
- { Set the Left axis }
- Chart1.LeftAxis.SetMinMax(0, Series1.YValues.Total );
-
- { Calc the pareto line }
- CalcPareto(CheckBoxPercent.Checked);
- end;
-
- procedure TFormPareto.CheckBox3Click(Sender: TObject);
- begin
- Series1.ColorEachPoint:=CheckBox3.Checked;
- Series2.ColorEachPoint:=CheckBox3.Checked;
- end;
-
- procedure TFormPareto.CheckBox2Click(Sender: TObject);
- begin
- if CheckBox2.Checked then Series2.ZOrder:=0
- else Series2.ZOrder:=1;
- end;
-
- procedure TFormPareto.CheckBox4Click(Sender: TObject);
- begin
- if CheckBox4.Checked then
- Series1.YValues.Order:=loDescending
- else
- Series1.YValues.Order:=loAscending;
- CalcPareto(CheckBoxPercent.Checked);
- end;
-
- procedure TFormPareto.CheckBox1Click(Sender: TObject);
- begin
- Chart1.View3D:=CheckBox1.Checked;
- end;
-
- procedure TFormPareto.CheckBoxPercentClick(Sender: TObject);
- begin
- CalcPareto(CheckBoxPercent.Checked);
- if CheckBoxPercent.Checked then
- Chart1.RightAxis.SetMinMax(0,100)
- else
- Chart1.RightAxis.SetMinMax(0,Series2.YValues.MaxValue);
-
- Series2.Pointer.Style:=psCircle;
-
- end;
-
- procedure TFormPareto.CheckBox5Click(Sender: TObject);
- begin
- if CheckBox5.Checked then
- begin
- Series1.VertAxis:=aRightAxis;
- Series2.VertAxis:=aLeftAxis;
- end
- else
- begin
- Series1.VertAxis:=aLeftAxis;
- Series2.VertAxis:=aRightAxis;
- end;
- Series1.GetVertAxis.SetMinMax(0, Series1.YValues.Total);
- Series2.GetVertAxis.SetMinMax(0, 100);
- end;
-
- procedure TFormPareto.Button1Click(Sender: TObject);
- begin
- Close
- end;
-
- end.
-