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

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { Areas Demo                                  }
  4. { Copyright (c) 1995-1996 by David Berneda    }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit Stackare;
  8.  
  9. interface
  10.  
  11. { This form shows 3 TAreaSeries components on same Chart.
  12.   Areas can be Stacked or Stacked 100%
  13. }
  14. uses
  15.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  16.   Forms, Dialogs, StdCtrls, Teengine, Series, Buttons, Chart, ExtCtrls,
  17.   TeeProcs, TeeComma
  18.   ;
  19.  
  20. type
  21.   TAreasForm = class(TForm)
  22.     Panel1: TPanel;
  23.     RadioGroup1: TRadioGroup;
  24.     Chart1: TChart;
  25.     BitBtn1: TBitBtn;
  26.     AreaSeries1: TAreaSeries;
  27.     AreaSeries2: TAreaSeries;
  28.     AreaSeries3: TAreaSeries;
  29.     CheckBox1: TCheckBox;
  30.     Label1: TLabel;
  31.     CheckBox2: TCheckBox;
  32.     Timer1: TTimer;
  33.     CheckBox3: TCheckBox;
  34.     CheckBox4: TCheckBox;
  35.     TeeCommander1: TTeeCommander;
  36.     procedure FormCreate(Sender: TObject);
  37.     procedure RadioGroup1Click(Sender: TObject);
  38.     procedure CheckBox1Click(Sender: TObject);
  39.     procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  40.       Y: Integer);
  41.     procedure CheckBox2Click(Sender: TObject);
  42.     procedure Timer1Timer(Sender: TObject);
  43.     procedure CheckBox3Click(Sender: TObject);
  44.     procedure CheckBox4Click(Sender: TObject);
  45.   private
  46.     { Private declarations }
  47.   public
  48.     { Public declarations }
  49.     tmpDelta,tmpCounter,tmpIndex:Longint;
  50.     tmpSeries:TAreaSeries;
  51.   end;
  52.  
  53. implementation
  54.  
  55. {$R *.DFM}
  56.  
  57. { Some random values.... }
  58. procedure TAreasForm.FormCreate(Sender: TObject);
  59.  
  60.   Procedure CreateRandom(Area:TAreaSeries);
  61.   var t:Longint;
  62.       Old:Double;
  63.   begin
  64.     With Area do
  65.     begin
  66.       XValues.DateTime:=False;
  67.       Clear;
  68.       Old:=500+Random(1000);
  69.       for t:=1 to 30 do
  70.       begin
  71.         Old:=Old+Random(50)-25;
  72.         Add( Old,'',clTeeColor);
  73.       end;
  74.       Cursor:=crTeeHand;
  75.     end;
  76.   end;
  77.  
  78. begin
  79.   tmpCounter:=-1;
  80.   tmpSeries:=nil;
  81.   CreateRandom(AreaSeries1);
  82.   CreateRandom(AreaSeries2);
  83.   CreateRandom(AreaSeries3);
  84. end;
  85.  
  86. procedure TAreasForm.RadioGroup1Click(Sender: TObject);
  87. begin
  88.   { Change how areas are displayed. (Stacked, Stacked 100%) }
  89.   AreaSeries1.MultiArea:=TMultiArea(RadioGroup1.ItemIndex);
  90. end;
  91.  
  92. procedure TAreasForm.CheckBox1Click(Sender: TObject);
  93. begin
  94.   Chart1.View3D:=CheckBox1.Checked;  { <-- turn on/off 3d }
  95. end;
  96.  
  97. procedure TAreasForm.Chart1MouseMove(Sender: TObject; Shift: TShiftState;
  98.   X, Y: Integer);
  99.  
  100.   Procedure HitSeries(ASeries:TChartSeries);
  101.   Var tmp:Longint;
  102.   begin
  103.     tmp:=ASeries.Clicked(x,y);
  104.     if tmp<>-1 then
  105.     begin
  106.       Label1.Caption:=ASeries.Name;
  107.       Label1.Font.Color:=ASeries.SeriesColor;
  108.     end;
  109.   end;
  110.  
  111. var t:Longint;
  112. begin
  113.   Label1.Caption:='';
  114.   for t:=0 to Chart1.SeriesCount-1 do HitSeries(Chart1.Series[t]);
  115.   Label1.Visible:=Label1.Caption<>'';
  116. end;
  117.  
  118. procedure TAreasForm.CheckBox2Click(Sender: TObject);
  119. begin
  120.   Timer1.Enabled:=CheckBox2.Checked;
  121.   if Timer1.Enabled then RadioGroup1.ItemIndex:=1;
  122. end;
  123.  
  124. procedure TAreasForm.Timer1Timer(Sender: TObject);
  125. var tmp:Double;
  126. begin
  127.   if (tmpCounter=-1) or (tmpCounter=5) then
  128.   begin
  129.     Case Random(3) of
  130.       0: tmpSeries:=AreaSeries1;
  131.       1: tmpSeries:=AreaSeries2;
  132.       2: tmpSeries:=AreaSeries3;
  133.     end;
  134.     tmpIndex:=Random(tmpSeries.Count);
  135.     tmpCounter:=0;
  136.     With tmpSeries.GetVertAxis do tmpDelta:=Round(Abs(Maximum-Minimum)/50.0);
  137.     if Random(2)=1 then tmpDelta:=-tmpDelta;
  138.   end;
  139.   inc(tmpCounter);
  140.   tmp:=tmpSeries.YValue[tmpIndex];
  141.   if (tmp+tmpDelta)>0 then tmpSeries.YValue[tmpIndex]:=tmp+tmpDelta;
  142. end;
  143.  
  144. procedure TAreasForm.CheckBox3Click(Sender: TObject);
  145. begin
  146.   if CheckBox3.Checked then
  147.   begin
  148.     AreaSeries1.AreaBrush:=bsHorizontal;
  149.     AreaSeries2.AreaBrush:=bsBDiagonal;
  150.     AreaSeries3.AreaBrush:=bsDiagCross;
  151.   end
  152.   else
  153.   begin
  154.     AreaSeries1.AreaBrush:=bsSolid;
  155.     AreaSeries2.AreaBrush:=bsSolid;
  156.     AreaSeries3.AreaBrush:=bsSolid;
  157.   end;
  158. end;
  159.  
  160. procedure TAreasForm.CheckBox4Click(Sender: TObject);
  161. begin
  162.   AreaSeries1.Stairs:=CheckBox4.Checked;
  163.   AreaSeries2.Stairs:=CheckBox4.Checked;
  164.   AreaSeries3.Stairs:=CheckBox4.Checked;
  165. end;
  166.  
  167. end.
  168.