home *** CD-ROM | disk | FTP | other *** search
/ PC Expert 29 / Pce29cd.iso / RUNIMAGE / DELPHI40 / DEMOS / TEECHART / UHIGHLO.PAS < prev    next >
Pascal/Delphi Source File  |  1998-06-16  |  5KB  |  167 lines

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { High-Mean-Low Form Demo                     }
  4. { Copyright (c) 1996 by David Berneda         }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit UHighLo;
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, Teengine, Series, ExtCtrls, Chart, StdCtrls,
  14.   Buttons, TeeProcs, TeeFunci;
  15.  
  16. type
  17.   THighLowForm = class(TForm)
  18.     Chart1: TChart;
  19.     BarSeries1: TBarSeries;
  20.     Panel1: TPanel;
  21.     BitBtn1: TBitBtn;
  22.     BitBtn2: TBitBtn;
  23.     CheckBox1: TCheckBox;
  24.     Timer1: TTimer;
  25.     CB3D: TCheckBox;
  26.     AverageSeries: TLineSeries;
  27.     HighSeries: TLineSeries;
  28.     LowSeries: TLineSeries;
  29.     CheckBox2: TCheckBox;
  30.     CheckBox3: TCheckBox;
  31.     Memo1: TMemo;
  32.     procedure FormCreate(Sender: TObject);
  33.     procedure Chart1AfterDraw(Sender: TObject);
  34.     procedure BitBtn1Click(Sender: TObject);
  35.     procedure CheckBox1Click(Sender: TObject);
  36.     procedure Timer1Timer(Sender: TObject);
  37.     procedure CB3DClick(Sender: TObject);
  38.     procedure CheckBox2Click(Sender: TObject);
  39.     procedure CheckBox3Click(Sender: TObject);
  40.   private
  41.     { Private declarations }
  42.   public
  43.     { Public declarations }
  44.     Bar2:TBarSeries;
  45.   end;
  46.  
  47. implementation
  48.  
  49. {$R *.DFM}
  50.  
  51. procedure THighLowForm.FormCreate(Sender: TObject);
  52. begin
  53.   TeeEraseBack:=False; { try win95 + plus ! + drag window + resizing ! }
  54.  
  55.   Bar2:=nil;
  56.  
  57.   Chart1.View3D:=CB3D.Checked;
  58.   Chart1.Chart3DPercent:=35;
  59.  
  60.   BarSeries1.Fillsamplevalues(6);
  61.   BarSeries1.Dark3D:=Chart1.IsScreenHighColor;
  62.  
  63.   Chart1.RightAxis.Minimum:=0;
  64.   Chart1.RightAxis.AutomaticMaximum:=True;
  65.   BarSeries1.RefreshSeries;
  66. end;
  67.  
  68. procedure THighLowForm.Chart1AfterDraw(Sender: TObject);
  69. begin
  70.   if not CheckBox2.Checked then { only with one bar, much pretty... }
  71.   With Chart1,Canvas do
  72.   begin
  73.     Brush.Style:=bsClear;
  74.  
  75.     Font.PixelsPerInch:=Screen.PixelsPerInch;
  76.     Font.Size:=12;
  77.     Font.Style:=[fsBold,fsItalic];
  78.  
  79.     Font.Color:=AverageSeries.SeriesColor;
  80.     TextOut( ChartXCenter,
  81.                 AverageSeries.CalcYPos(0),
  82.                 AverageSeries.Name+' '+AverageSeries.ValueMarkText[0]);
  83.  
  84.     Font.Color:=HighSeries.SeriesColor;
  85.     TextOut( ChartXCenter,
  86.                 HighSeries.CalcYPos(0),
  87.                 HighSeries.Name+' '+HighSeries.ValueMarkText[0]);
  88.  
  89.     Font.Color:=LowSeries.SeriesColor;
  90.     TextOut( ChartXCenter,
  91.                 LowSeries.CalcYPos(0),
  92.                 LowSeries.Name+' '+LowSeries.ValueMarkText[0]);
  93.   end;
  94. end;
  95.  
  96. procedure THighLowForm.BitBtn1Click(Sender: TObject);
  97. begin
  98.   Chart1.PrintLandscape;
  99. end;
  100.  
  101. procedure THighLowForm.CheckBox1Click(Sender: TObject);
  102. begin
  103.   Timer1.Enabled:=CheckBox1.Checked;
  104. end;
  105.  
  106. procedure THighLowForm.Timer1Timer(Sender: TObject);
  107. var tmp:Longint;
  108. begin
  109.   Timer1.Enabled:=False;
  110.   tmp:=Random(BarSeries1.Count);
  111.   BarSeries1.YValue[tmp]:=BarSeries1.YValue[tmp]+Random(50)-25;
  112.   if random(100)<8 then
  113.      BarSeries1.BarStyle:=TBarStyle(Random(1+Ord(High(TBarStyle))));
  114.  
  115.   { Randomly change from 3D to 2D }
  116.   if random(100)<2 then CB3D.Checked:=not CB3D.Checked;
  117.   Timer1.Enabled:=True;
  118. end;
  119.  
  120. procedure THighLowForm.CB3DClick(Sender: TObject);
  121. begin
  122.   Chart1.View3d:=CB3D.Checked;
  123. end;
  124.  
  125. procedure THighLowForm.CheckBox2Click(Sender: TObject);
  126. begin
  127.   if CheckBox2.Checked then
  128.   begin
  129.   { create a new TBarSeries, and add data }
  130.     Bar2:=TBarSeries.Create(Self);
  131.     Bar2.ParentChart:=Chart1;
  132.  
  133.     Bar2.BarStyle:=bsInvPyramid;
  134.  
  135.   { fill the second series with same number of random values than
  136.     the first bar series }
  137.     Bar2.FillSampleValues( BarSeries1.Count );
  138.  
  139.   { then add this new Series as datasource for statistics... }
  140.     AverageSeries.DataSources.Add(Bar2);
  141.     Bar2.AddLinkedSeries(AverageSeries);
  142.  
  143.     HighSeries.DataSources.Add(Bar2);
  144.     Bar2.AddLinkedSeries(HighSeries);
  145.  
  146.     LowSeries.DataSources.Add(Bar2);
  147.     Bar2.AddLinkedSeries(LowSeries);
  148.   end
  149.   else
  150.   begin
  151.    { remove the second bar series we created before... }
  152.      Bar2.Free;
  153.      Bar2:=nil;
  154.   end;
  155. { and finally refresh the statistical series to view results... }
  156.   BarSeries1.RefreshSeries;
  157. end;
  158.  
  159. procedure THighLowForm.CheckBox3Click(Sender: TObject);
  160. begin
  161.   BarSeries1.Active:=CheckBox3.Checked;
  162.   if Assigned(Bar2) then
  163.      Bar2.Active:=CheckBox3.Checked;
  164. end;
  165.  
  166. end.
  167.