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

  1. {*********************************************}
  2. { TeeChart Delphi Component Library v3        }
  3. { Copyright (c) 1995-1996 by David Berneda    }
  4. { All rights reserved                         }
  5. {*********************************************}
  6. unit TeeBasic;
  7. {$P-}  { <-- Delphi 1.0 compatibility }
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, StdCtrls, Series,
  14.   TeeShape, GanttCh, BubbleCh, ArrowCha, Buttons;
  15.  
  16. type
  17.   TDemoForm = class(TForm)
  18.     Notebook1: TNotebook;
  19.     Chart1: TChart;
  20.     Series1: TLineSeries;
  21.     Series2: TLineSeries;
  22.     Series3: TLineSeries;
  23.     Series4: TLineSeries;
  24.     Chart2: TChart;
  25.     Series5: TBarSeries;
  26.     Series6: TBarSeries;
  27.     Series7: TBarSeries;
  28.     Panel2: TPanel;
  29.     Chart3: TChart;
  30.     Series8: THorizBarSeries;
  31.     Series9: THorizBarSeries;
  32.     Series10: THorizBarSeries;
  33.     Chart4: TChart;
  34.     Series11: TAreaSeries;
  35.     Series12: TAreaSeries;
  36.     Chart5: TChart;
  37.     Series13: TPointSeries;
  38.     Series14: TPointSeries;
  39.     Series15: TPointSeries;
  40.     Series16: TPointSeries;
  41.     Series17: TPointSeries;
  42.     Series18: TPointSeries;
  43.     Chart6: TChart;
  44.     Series19: TPieSeries;
  45.     Chart7: TChart;
  46.     Series20: TFastLineSeries;
  47.     Series21: TFastLineSeries;
  48.     Series22: TFastLineSeries;
  49.     Series23: TFastLineSeries;
  50.     Series24: TFastLineSeries;
  51.     Chart8: TChart;
  52.     Series26: TArrowSeries;
  53.     Series27: TArrowSeries;
  54.     Chart9: TChart;
  55.     Series28: TBubbleSeries;
  56.     Chart10: TChart;
  57.     Series29: TGanttSeries;
  58.     Chart11: TChart;
  59.     Series30: TChartShape;
  60.     Series31: TChartShape;
  61.     Series32: TChartShape;
  62.     Button2: TButton;
  63.     Panel3: TPanel;
  64.     ListBox1: TListBox;
  65.     CheckBox1: TCheckBox;
  66.     CheckBox2: TCheckBox;
  67.     Image1: TImage;
  68.     Timer1: TTimer;
  69.     ScrollBar1: TScrollBar;
  70.     Label1: TLabel;
  71.     BitBtn1: TBitBtn;
  72.     BitBtn2: TBitBtn;
  73.     SpeedButton1: TSpeedButton;
  74.     SpeedButton2: TSpeedButton;
  75.     SpeedButton3: TSpeedButton;
  76.     SpeedButton4: TSpeedButton;
  77.     Label2: TLabel;
  78.     Label3: TLabel;
  79.     CheckBox3: TCheckBox;
  80.     ComboBox1: TComboBox;
  81.     ComboBox2: TComboBox;
  82.     ScrollBar2: TScrollBar;
  83.     Button3: TButton;
  84.     CheckBox4: TCheckBox;
  85.     Label4: TLabel;
  86.     Label5: TLabel;
  87.     Label6: TLabel;
  88.     Label7: TLabel;
  89.     ScrollBar3: TScrollBar;
  90.     Label8: TLabel;
  91.     procedure ListBox1Click(Sender: TObject);
  92.     procedure FormCreate(Sender: TObject);
  93.     procedure CheckBox1Click(Sender: TObject);
  94.     procedure CheckBox2Click(Sender: TObject);
  95.     procedure ScrollBar1Change(Sender: TObject);
  96.     procedure Timer1Timer(Sender: TObject);
  97.     procedure Button2Click(Sender: TObject);
  98.     procedure BitBtn1Click(Sender: TObject);
  99.     procedure BitBtn2Click(Sender: TObject);
  100.     procedure SpeedButton1Click(Sender: TObject);
  101.     procedure SpeedButton4Click(Sender: TObject);
  102.     procedure SpeedButton2Click(Sender: TObject);
  103.     procedure SpeedButton3Click(Sender: TObject);
  104.     procedure CheckBox3Click(Sender: TObject);
  105.     procedure ComboBox1Change(Sender: TObject);
  106.     procedure Image1Click(Sender: TObject);
  107.     procedure ScrollBar2Change(Sender: TObject);
  108.     procedure Series28GetMarkText(Sender: TChartSeries;
  109.       ValueIndex: Integer; var MarkText: string);
  110.     procedure Button3Click(Sender: TObject);
  111.     procedure CheckBox4Click(Sender: TObject);
  112.     procedure FormShow(Sender: TObject);
  113.     procedure ScrollBar3Change(Sender: TObject);
  114.   private
  115.     { Private declarations }
  116.   public
  117.     { Public declarations }
  118.     tmpSeries,
  119.     tmpIndex,
  120.     tmpRandom,
  121.     tmpTimes:Longint;
  122.     Function TheChart:TChart;
  123.     Procedure HorizScroll(Const Percent:Double);
  124.     Procedure VertScroll(Const Percent:Double);
  125.     Procedure ScrollAxis(Axis:TChartAxis; Const Percent:Double);
  126.   end;
  127.  
  128. implementation
  129.  
  130. {$R *.DFM}
  131. Uses TeeAbout;
  132.  
  133. procedure TDemoForm.ListBox1Click(Sender: TObject);
  134. var t:Longint;
  135. begin
  136.   NoteBook1.PageIndex:=ListBox1.ItemIndex;
  137.   With TheChart do
  138.   begin
  139.     tmpTimes:=-1;
  140.     AnimatedZoom:=True;
  141.     AnimatedZoomSteps:=4;
  142.     for t:=0 to SeriesCount-1 do
  143.     With Series[t] do
  144.          FillSampleValues(NumSampleValues);
  145.     UndoZoom;
  146.     CheckBox1.Checked  :=View3D;
  147.     ScrollBar2.Enabled :=View3D;
  148.     ScrollBar2.Position:=Chart3DPercent;
  149.     if Series[0] is TPieSeries then
  150.        ScrollBar3.Position:=View3DOptions.Elevation
  151.     else
  152.        ScrollBar3.Position:=View3DOptions.Rotation;
  153.     ScrollBar3.Enabled:=View3D;
  154.   end;
  155. end;
  156.  
  157. procedure TDemoForm.FormCreate(Sender: TObject);
  158. begin
  159.   tmpTimes:=-1;
  160.   ScrollBar1.Position:=Timer1.Interval;
  161.   ComboBox1.ItemIndex:=0;
  162.   ComboBox2.ItemIndex:=0;
  163.   ListBox1.ItemIndex :=0;
  164.   ListBox1Click(Self);
  165. end;
  166.  
  167. procedure TDemoForm.CheckBox1Click(Sender: TObject);
  168. begin
  169.   TheChart.View3D:=CheckBox1.Checked;
  170.   ScrollBar2.Enabled:=TheChart.View3D;
  171.   ScrollBar3.Enabled:=TheChart.View3D;
  172. end;
  173.  
  174. procedure TDemoForm.CheckBox2Click(Sender: TObject);
  175. begin
  176.   Timer1.Enabled:=CheckBox2.Checked;
  177.   ScrollBar1.Enabled:=Timer1.Enabled;
  178. end;
  179.  
  180. procedure TDemoForm.ScrollBar1Change(Sender: TObject);
  181. begin
  182.   Timer1.Interval:=ScrollBar1.Position;
  183. end;
  184.  
  185. Function TDemoform.TheChart:TChart;
  186. begin
  187.   with NoteBook1 do
  188.   result:=(Pages.Objects[PageIndex] as TPage).Controls[0] as TChart;
  189. end;
  190.  
  191. procedure TDemoForm.Timer1Timer(Sender: TObject);
  192. var t:Longint;
  193.     tmpX:Double;
  194. begin
  195.   With NoteBook1 do
  196.   Case PageIndex of
  197.      0,3,4,6:  With TheChart do
  198.                begin
  199.                  for t:=0 to SeriesCount-1 do
  200.                  With Series[t] do
  201.                  begin
  202.                    tmpX:=XValues[1]-XValues[0];
  203.                    Delete(0);
  204.                    AddXY( XValues.Last+tmpX,
  205.                           YValues.Last+Random(100)-50,'',clTeeColor);
  206.                  end;
  207.                end;
  208.      1,2,8:    With TheChart do
  209.                begin
  210.                  if (tmpTimes=-1) then
  211.                  begin
  212.                    tmpSeries:=Random(SeriesCount);
  213.                    tmpIndex :=Random(Series[tmpSeries].Count);
  214.                    tmpTimes :=Random(10);
  215.                    tmpRandom:=2*Round(Random(50)-25.0);
  216.                  end;
  217.                  if tmpSeries<>-1 then
  218.                  begin
  219.                    if PageIndex=8 then
  220.                    With (Series[tmpSeries] as TBubbleSeries) do
  221.                    begin
  222.                      tmpX:=RadiusValues[tmpIndex]+tmpRandom;
  223.                      if tmpX>=2 then
  224.                      begin
  225.                        RadiusValues[tmpIndex]:=tmpX;
  226.                        if tmpRandom>0 then tmpX:=XValues[tmpIndex]+1
  227.                                       else tmpX:=XValues[tmpIndex]-1;
  228.                        XValues[tmpIndex]:=tmpX;
  229.                        if Random(10)<5 then tmpX:=YValues[tmpIndex]+50
  230.                                        else tmpX:=YValues[tmpIndex]-50;
  231.                        YValues[tmpIndex]:=tmpX;
  232.                      end
  233.                      else tmpTimes:=0;
  234.                    end
  235.                    else
  236.                    With Series[tmpSeries].MandatoryValueList do
  237.                         Value[tmpIndex]:=Value[tmpIndex]+tmpRandom;
  238.                    Dec(tmpTimes);
  239.                    Repaint;
  240.                  end;
  241.                end;
  242.      5: (TheChart[0] as TPieSeries).Rotate(358);
  243.   end;
  244. end;
  245.  
  246. procedure TDemoForm.Button2Click(Sender: TObject);
  247. begin
  248.   Close;
  249. end;
  250.  
  251. procedure TDemoForm.BitBtn1Click(Sender: TObject);
  252. begin
  253.   TheChart.ZoomPercent(120);
  254.   Button3.Enabled:=True;
  255. end;
  256.  
  257. procedure TDemoForm.BitBtn2Click(Sender: TObject);
  258. begin
  259.   TheChart.ZoomPercent(80);
  260.   Button3.Enabled:=True;
  261. end;
  262.  
  263. Procedure TDemoForm.ScrollAxis(Axis:TChartAxis; Const Percent:Double);
  264. var Amount:Double;
  265. begin
  266.   With Axis do
  267.   begin
  268.     Amount:=-((Maximum-Minimum)/(100.0/Percent));
  269.     SetMinMax(Minimum-Amount,Maximum-Amount);
  270.   end;
  271. end;
  272.  
  273. Procedure TDemoForm.HorizScroll(Const Percent:Double);
  274. begin
  275.   ScrollAxis(TheChart.TopAxis,Percent);
  276.   ScrollAxis(TheChart.BottomAxis,Percent);
  277.   Button3.Enabled:=True;
  278. end;
  279.  
  280. Procedure TDemoForm.VertScroll(Const Percent:Double);
  281. begin
  282.   ScrollAxis(TheChart.LeftAxis,Percent);
  283.   ScrollAxis(TheChart.RightAxis,Percent);
  284.   Button3.Enabled:=True;
  285. end;
  286.  
  287. procedure TDemoForm.SpeedButton1Click(Sender: TObject);
  288. begin
  289.   HorizScroll(10);
  290. end;
  291.  
  292. procedure TDemoForm.SpeedButton4Click(Sender: TObject);
  293. begin
  294.   HorizScroll(-10);
  295. end;
  296.  
  297. procedure TDemoForm.SpeedButton2Click(Sender: TObject);
  298. begin
  299.   VertScroll(-10);
  300. end;
  301.  
  302. procedure TDemoForm.SpeedButton3Click(Sender: TObject);
  303. begin
  304.   VertScroll(10);
  305. end;
  306.  
  307. procedure TDemoForm.CheckBox3Click(Sender: TObject);
  308. begin
  309.   (TheChart[0] as TPieSeries).Circled:=CheckBox3.Checked;
  310. end;
  311.  
  312. procedure TDemoForm.ComboBox1Change(Sender: TObject);
  313. begin
  314.   With (TheChart[0] as TCustomBarSeries) do
  315.    MultiBar:=TMultiBar((Sender as TComboBox).ItemIndex);
  316. end;
  317.  
  318. procedure TDemoForm.Image1Click(Sender: TObject);
  319. begin
  320.   Timer1.Enabled:=False;
  321.   With TTeeAboutForm.Create(Self) do
  322.   try
  323.     ShowModal;
  324.   finally
  325.     Free;
  326.   end;
  327.   Timer1.Enabled:=True;
  328. end;
  329.  
  330. procedure TDemoForm.ScrollBar2Change(Sender: TObject);
  331. begin
  332.   TheChart.Chart3DPercent:=ScrollBar2.Position;
  333. end;
  334.  
  335. procedure TDemoForm.Series28GetMarkText(Sender: TChartSeries;
  336.   ValueIndex: Integer; var MarkText: string);
  337. begin
  338.    if ValueIndex=3 then MarkText:='USA' else
  339.    if ValueIndex=5 then MarkText:='UK' else
  340.    if ValueIndex=7 then MarkText:='Germany' else
  341.                         MarkText:='';
  342. end;
  343.  
  344. procedure TDemoForm.Button3Click(Sender: TObject);
  345. begin
  346.   TheChart.UndoZoom;
  347.   Button3.Enabled:=False;
  348. end;
  349.  
  350. procedure TDemoForm.CheckBox4Click(Sender: TObject);
  351. begin
  352.   Series11.Stairs:=CheckBox4.Checked;
  353.   Series12.Stairs:=CheckBox4.Checked;
  354. end;
  355.  
  356. procedure TDemoForm.FormShow(Sender: TObject);
  357. begin
  358.   Timer1.Enabled:=True;  { <-- start animation }
  359. end;
  360.  
  361. procedure TDemoForm.ScrollBar3Change(Sender: TObject);
  362. begin
  363.   if ScrollBar3.Enabled then
  364.   With TheChart.View3DOptions do
  365.   begin
  366.     Orthogonal:=False;
  367.     if TheChart[0] is TPieSeries then
  368.        Elevation:=ScrollBar3.Position
  369.     else
  370.        Rotation:=ScrollBar3.Position;
  371.   end;
  372. end;
  373.  
  374. end.
  375.