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

  1. {************************************************}
  2. {   TeeChart.   THorizBarSeries Data-Aware Demo  }
  3. {   Copyright (c) 1995-1996 by David Berneda     }
  4. {************************************************}
  5. unit Udbhoriz;
  6.  
  7. interface
  8.  
  9. { This form shows Horizontal Bar Series attached to a Table }
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, DB, DBTables, Chart, Series, ExtCtrls, DbChart, StdCtrls,
  14.   Teengine, Buttons, teeprocs;
  15.  
  16. type
  17.   TDBHorizBarForm = class(TForm)
  18.     Table1: TTable;
  19.     DBChart1: TDBChart;
  20.     Panel1: TPanel;
  21.     CheckBox1: TCheckBox;
  22.     RadioGroup1: TRadioGroup;
  23.     Timer1: TTimer;
  24.     BitBtn2: TBitBtn;
  25.     BitBtn3: TBitBtn;
  26.     HorizBarSeries1: THorizBarSeries;
  27.     HorizBarSeries2: THorizBarSeries;
  28.     CheckBox2: TCheckBox;
  29.     Memo1: TMemo;
  30.     procedure FormShow(Sender: TObject);
  31.     procedure RadioGroup1Click(Sender: TObject);
  32.     procedure CheckBox1Click(Sender: TObject);
  33.     procedure CheckBox2Click(Sender: TObject);
  34.     procedure Timer1Timer(Sender: TObject);
  35.     procedure BitBtn3Click(Sender: TObject);
  36.   private
  37.     { Private declarations }
  38.   public
  39.     { Public declarations }
  40.     DeltaZ:Integer;
  41.     Procedure RecalcMarks;
  42.   end;
  43.  
  44. implementation
  45.  
  46. {$R *.DFM}
  47.  
  48. procedure TDBHorizBarForm.FormShow(Sender: TObject);
  49. begin
  50.   DeltaZ:=-5;  { <-- this variable is used for animation only }
  51.  
  52.   { Here we set the Series order }
  53.   With DBChart1.SeriesList do
  54.   Begin
  55.     Items[0]:=HorizBarSeries2;
  56.     Items[1]:=HorizBarSeries1;
  57.   End;
  58. end;
  59.  
  60. Procedure TDBHorizBarForm.RecalcMarks;
  61. Begin
  62.   { Here the Series Marks and associated Axis are
  63.     adjusted depending on MultiBar (Stacked or not )
  64.   }
  65.   if (HorizBarSeries1.MultiBar=mbStacked) or
  66.      (HorizBarSeries1.MultiBar=mbStacked100) then
  67.   Begin
  68.     DBChart1.Series[0].Marks.Visible:=False;
  69.     DBChart1.Series[1].Marks.Visible:=True;
  70.     HorizBarSeries1.HorizAxis:=aTopAxis;
  71.     HorizBarSeries2.HorizAxis:=aTopAxis;
  72.   end
  73.   else
  74.   Begin
  75.     DBChart1.Series[0].Marks.Visible:=True;
  76.     DBChart1.Series[1].Marks.Visible:=True;
  77.     HorizBarSeries1.HorizAxis:=aBottomAxis;
  78.     HorizBarSeries2.HorizAxis:=aTopAxis;
  79.   end
  80. end;
  81.  
  82. procedure TDBHorizBarForm.RadioGroup1Click(Sender: TObject);
  83. begin
  84.   { Change the Series Stacked }
  85.   HorizBarSeries1.MultiBar:=TMultiBar(RadioGroup1.ItemIndex);
  86.   RecalcMarks;
  87. end;
  88.  
  89. procedure TDBHorizBarForm.CheckBox1Click(Sender: TObject);
  90. begin
  91.   DBChart1.View3D:=CheckBox1.Checked;  { <-- 3 dimensions }
  92. end;
  93.  
  94. procedure TDBHorizBarForm.CheckBox2Click(Sender: TObject);
  95. begin
  96.   Timer1.Enabled:=CheckBox2.Checked;  { <-- start / stop animation }
  97. end;
  98.  
  99. procedure TDBHorizBarForm.Timer1Timer(Sender: TObject);
  100. var tmp:Integer;
  101. begin
  102.   Timer1.Enabled:=False;
  103.   { here is the animation code }
  104.   tmp:=DBChart1.Chart3DPercent+DeltaZ;
  105.   if tmp<3 then
  106.   Begin
  107.     DeltaZ:=5;
  108.     tmp:=3;
  109.   end;
  110.   if tmp>90 then
  111.   begin
  112.     DeltaZ:=-5;
  113.     tmp:=90;
  114.   end;
  115.   DBChart1.Chart3DPercent:=tmp;
  116.   DBChart1.Legend.TopPos:=tmp;
  117.   if Random(100)=1 then
  118.      HorizBarSeries1.BarStyle:=TBarStyle(Random(Ord(High(TBarStyle))));
  119.   if Random(100)=1 then
  120.      HorizBarSeries2.BarStyle:=TBarStyle(Random(Ord(High(TBarStyle))));
  121.   if Random(100)=1 then
  122.      RadioGroup1.ItemIndex:=Random(RadioGroup1.Items.Count);
  123.   Timer1.Enabled:=True;
  124. end;
  125.  
  126. procedure TDBHorizBarForm.BitBtn3Click(Sender: TObject);
  127. var tmp:TChartSeries;
  128. begin
  129.   { This code "swaps" the two series }
  130.   With DBChart1.SeriesList do
  131.   Begin
  132.     tmp:=Items[0];
  133.     Items[0]:=Items[1];
  134.     Items[1]:=tmp;
  135.   End;
  136.   RecalcMarks;
  137.   DBChart1.Repaint;
  138. end;
  139.  
  140.  
  141.  
  142. end.
  143.