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

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { Pie Series Type Demo                        }
  4. { Copyright (c) 1995-1996 by David Berneda    }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit Pie;
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, Chart, Series, ExtCtrls, StdCtrls, Teengine,
  14.   Buttons, teeprocs;
  15.  
  16. type
  17.   TPieForm = class(TForm)
  18.     Chart1: TChart;
  19.     Panel1: TPanel;
  20.     CheckBox1: TCheckBox;
  21.     Timer1: TTimer;
  22.     PieSeries1: TPieSeries;
  23.     CheckBox2: TCheckBox;
  24.     CheckBox3: TCheckBox;
  25.     BitBtn3: TBitBtn;
  26.     CheckBox4: TCheckBox;
  27.     Shape1: TShape;
  28.     RadioGroup1: TRadioGroup;
  29.     CheckBox5: TCheckBox;
  30.     CheckBox6: TCheckBox;
  31.     RadioGroup2: TRadioGroup;
  32.     procedure FormCreate(Sender: TObject);
  33.     procedure CheckBox1Click(Sender: TObject);
  34.     procedure Timer1Timer(Sender: TObject);
  35.     procedure CheckBox2Click(Sender: TObject);
  36.     procedure CheckBox3Click(Sender: TObject);
  37.     procedure PieSeries1Click(Sender: TChartSeries; ValueIndex: Integer;
  38.       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  39.     procedure CheckBox4Click(Sender: TObject);
  40.     procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  41.       Y: Integer);
  42.     procedure RadioGroup1Click(Sender: TObject);
  43.     procedure CheckBox5Click(Sender: TObject);
  44.     procedure CheckBox6Click(Sender: TObject);
  45.   private
  46.     { Private declarations }
  47.   public
  48.     { Public declarations }
  49.     tmpX,tmpY:Longint;
  50.   end;
  51.  
  52. implementation
  53.  
  54. {$R *.DFM}
  55. Uses UDemUtil;
  56.  
  57. procedure TPieForm.FormCreate(Sender: TObject);
  58. begin
  59.   tmpX:=-4;
  60.   tmpY:=-3;
  61.   PieSeries1.FillSampleValues(8); { <-- Some random points }
  62.   Chart1.Gradient.Visible:=Chart1.IsScreenHighColor;
  63.   if Chart1.Gradient.Visible then
  64.      Chart1.Title.Font.Color:=clWhite
  65.   else
  66.      Chart1.Title.Font.Color:=clBlue;
  67.   CheckBox6.Checked:=Chart1.Gradient.Visible;
  68. end;
  69.  
  70. procedure TPieForm.CheckBox1Click(Sender: TObject);
  71. begin
  72.   Timer1.Enabled:=CheckBox1.Checked; { <-- animation on/off }
  73.   CheckBox3.Enabled:=not Timer1.Enabled;
  74.   if not Timer1.Enabled then
  75.   Begin
  76.     PieSeries1.CustomXRadius:=0;
  77.     PieSeries1.CustomYRadius:=0;
  78.   end;
  79. end;
  80.  
  81. procedure TPieForm.Timer1Timer(Sender: TObject);
  82. begin
  83. { increase pie rotation angle to get animation }
  84.   PieSeries1.Rotate(5);
  85.  
  86. { change X and Y radius to get animation }
  87.   With PieSeries1 do
  88.   Begin
  89.     if tmpX>0 then
  90.     Begin
  91.       if XRadius+tmpX>Chart1.ChartWidth div 3 then tmpX:=-tmpX;
  92.     end
  93.     else if XRadius+tmpX<30 then tmpX:=-tmpX;
  94.     CustomXRadius:=XRadius+tmpX;
  95.  
  96.     if tmpY>0 then
  97.     Begin
  98.       if YRadius+tmpY>Chart1.ChartHeight div 3 then tmpY:=-tmpY;
  99.     end
  100.     else
  101.       if YRadius+tmpY<30 then tmpY:=-tmpY;
  102.     CustomYRadius:=YRadius+tmpY;
  103.   end;
  104.  
  105. { Change Marks.Font.Color randomly }
  106. { if Random(100)<4 then
  107.   With PieSeries1.Marks do
  108.   Begin
  109.     Repeat
  110.        BackColor:=ColorPalette[1+Random(MaxDefaultColors)];
  111.        Font.Color:=ColorPalette[1+Random(MaxDefaultColors)];
  112.     Until BackColor<>Font.Color;
  113.     Arrow.Color:=ColorPalette[1+Random(MaxDefaultColors)];
  114.   end;
  115.  
  116.   { Change Legend positioning Randomly }
  117.   if Random(100)<4 then
  118.      RadioGroup1.ItemIndex:=Random(RadioGroup1.Items.Count);
  119. end;
  120.  
  121. procedure TPieForm.CheckBox2Click(Sender: TObject);
  122. begin
  123.   Chart1.View3d:=CheckBox2.Checked; { <-- 3d on / off }
  124. end;
  125.  
  126. procedure TPieForm.CheckBox3Click(Sender: TObject);
  127. begin
  128.   PieSeries1.Circled:=CheckBox3.Checked; { <-- circled / elliptic pie }
  129. end;
  130.  
  131. procedure TPieForm.PieSeries1Click(Sender: TChartSeries;
  132.   ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X,
  133.   Y: Integer);
  134. begin
  135.   { On Clicked Pie, let the user change the clicked pie color }
  136.   With PieSeries1 do
  137.        ValueColor[ValueIndex]:=EditColor(Self,ValueColor[ValueIndex]);
  138. end;
  139.  
  140. procedure TPieForm.CheckBox4Click(Sender: TObject);
  141. begin
  142.   PieSeries1.UsePatterns:=CheckBox4.Checked;
  143.   if PieSeries1.UsePatterns then PieSeries1.CircleBackColor:=clWhite;
  144. end;
  145.  
  146. procedure TPieForm.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  147.   Y: Integer);
  148. var tmp:Longint;
  149. begin
  150.   tmp:=PieSeries1.Clicked(x,y);
  151.   if tmp=-1 then Shape1.Visible:=False
  152.   else
  153.   begin
  154.     Shape1.Visible:=True;
  155.     Shape1.Brush.Color:=PieSeries1.ValueColor[tmp];
  156.   end;
  157. end;
  158.  
  159. procedure TPieForm.RadioGroup1Click(Sender: TObject);
  160. begin
  161.   Chart1.Legend.Alignment:=TLegendAlignment(RadioGroup1.ItemIndex);
  162. end;
  163.  
  164. procedure TPieForm.CheckBox5Click(Sender: TObject);
  165. begin
  166.   PieSeries1.Marks.Visible:=CheckBox5.Checked;
  167. end;
  168.  
  169. procedure TPieForm.CheckBox6Click(Sender: TObject);
  170. begin
  171.   Chart1.Gradient.Visible:=CheckBox6.Checked;
  172. end;
  173.  
  174. end.
  175.