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

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { Overlayed Bars Demo                         }
  4. { Copyright (c) 1995-1996 by David Berneda    }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit Uoverbar;
  8.  
  9. interface
  10.  
  11. { This form shows 3 bar series in a overlayed layout.
  12.   Each Bar Series has a different BarWidthPercent.
  13.   The order Series are drawn is the most important thing. See below.
  14. }
  15. uses
  16.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  17.   Forms, Dialogs, Chart, Series, ExtCtrls, Teengine, StdCtrls, Spin,
  18.   Buttons, TeeProcs;
  19.  
  20. type
  21.   TOverBarForm = class(TForm)
  22.     Chart1: TChart;
  23.     BarSeries1: TBarSeries;
  24.     BarSeries2: TBarSeries;
  25.     BarSeries3: TBarSeries;
  26.     Panel1: TPanel;
  27.     Memo1: TMemo;
  28.     BitBtn3: TBitBtn;
  29.     Label1: TLabel;
  30.     SpinEdit1: TSpinEdit;
  31.     Label2: TLabel;
  32.     SpinEdit2: TSpinEdit;
  33.     CBPatterns: TCheckBox;
  34.     procedure FormCreate(Sender: TObject);
  35.     procedure BarSeries2Click(Sender: TChartSeries; ValueIndex: Integer;
  36.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  37.     procedure BarSeries1Click(Sender: TChartSeries; ValueIndex: Integer;
  38.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  39.     procedure SpinEdit1Change(Sender: TObject);
  40.     procedure SpinEdit2Change(Sender: TObject);
  41.     procedure CBPatternsClick(Sender: TObject);
  42.     procedure BarSeries3Click(Sender: TChartSeries; ValueIndex: Integer;
  43.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  44.   private
  45.     { Private declarations }
  46.   public
  47.     { Public declarations }
  48.     procedure ChangeOverBars;
  49.   end;
  50.  
  51. var
  52.   OverBarForm: TOverBarForm;
  53.  
  54. implementation
  55.  
  56. {$R *.DFM}
  57.  
  58. procedure TOverBarForm.FormCreate(Sender: TObject);
  59. var t:Longint;
  60. begin
  61.   { lets fill the 3 Bar Series with some random data }
  62.   { Series3 has the biggest values, while Series1 has the smaller values }
  63.   With BarSeries3 do
  64.   begin
  65.     Clear;
  66.     for t:=1 to 10 do Add( 100+Random(30),'', clTeeColor);
  67.   end;
  68.   With BarSeries2 do
  69.   begin
  70.     Clear;
  71.     for t:=1 to 10 do Add( 50+Random(10), '', clTeeColor);
  72.   end;
  73.   With BarSeries1 do
  74.   begin
  75.     Clear;
  76.     for t:=1 to 10 do Add( 20+Random(10), '', clTeeColor);
  77.   end;
  78.   ChangeOverBars;
  79. end;
  80.  
  81. procedure TOverBarForm.BarSeries2Click(Sender: TChartSeries; ValueIndex: Integer;
  82.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  83. begin
  84.    Showmessage('You clicked the Red Bar at point #: '+inttostr(Valueindex));
  85. end;
  86.  
  87. procedure TOverBarForm.BarSeries1Click(Sender: TChartSeries; ValueIndex: Integer;
  88.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  89. begin
  90.    Showmessage('You clicked the Green Bar at point #: '+inttostr(Valueindex));
  91. end;
  92.  
  93. procedure TOverBarForm.ChangeOverBars;
  94. begin { compress / expand the overlayed space between bars }
  95.   BarSeries3.BarWidthPercent:=SpinEdit1.Value;
  96.   BarSeries1.BarWidthPercent:=SpinEdit1.Value-Round(SpinEdit1.Value*55.0/100.0);
  97.   BarSeries2.BarWidthPercent:=SpinEdit1.Value-Round(SpinEdit1.Value*35.0/100.0);
  98. end;
  99.  
  100. procedure TOverBarForm.SpinEdit1Change(Sender: TObject);
  101. begin
  102.   ChangeOverBars;
  103. end;
  104.  
  105. procedure TOverBarForm.SpinEdit2Change(Sender: TObject);
  106. begin { increase / decrease the 3 Series OffsetPercent property }
  107. { This will make partially overlay }
  108.   BarSeries3.OffsetPercent:=SpinEdit2.Value;
  109.   BarSeries1.OffsetPercent:=SpinEdit2.Value-Round(SpinEdit2.Value*55.0/100.0);
  110.   BarSeries2.OffsetPercent:=SpinEdit2.Value-Round(SpinEdit2.Value*35.0/100.0);
  111. end;
  112.  
  113. procedure TOverBarForm.CBPatternsClick(Sender: TObject);
  114. begin
  115.   if CBPatterns.Checked then
  116.   begin
  117.     BarSeries1.BarBrush.Style:=bsFDiagonal;
  118.     BarSeries2.BarBrush.Style:=bsBDiagonal;
  119.     BarSeries3.BarBrush.Style:=bsDiagCross;
  120.     Chart1.BackColor:=clWhite;
  121.   end
  122.   else
  123.   begin
  124.     BarSeries1.BarBrush.Style:=bsSolid;
  125.     BarSeries2.BarBrush.Style:=bsSolid;
  126.     BarSeries3.BarBrush.Style:=bsSolid;
  127.     Chart1.BackColor:=clTeeColor;
  128.   end;
  129. end;
  130.  
  131. procedure TOverBarForm.BarSeries3Click(Sender: TChartSeries;
  132.   ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X,
  133.   Y: Integer);
  134. begin
  135.    Showmessage('You clicked the Blue Bar at point #: '+inttostr(Valueindex));
  136. end;
  137.  
  138. end.
  139.