home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / full / delphi / RUNIMAGE / DELPHI30 / DEMOS / TEECHART / TEEBASIC.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-04  |  9.6 KB  |  353 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.     procedure ListBox1Click(Sender: TObject);
  90.     procedure FormCreate(Sender: TObject);
  91.     procedure CheckBox1Click(Sender: TObject);
  92.     procedure CheckBox2Click(Sender: TObject);
  93.     procedure ScrollBar1Change(Sender: TObject);
  94.     procedure Timer1Timer(Sender: TObject);
  95.     procedure Button2Click(Sender: TObject);
  96.     procedure BitBtn1Click(Sender: TObject);
  97.     procedure BitBtn2Click(Sender: TObject);
  98.     procedure SpeedButton1Click(Sender: TObject);
  99.     procedure SpeedButton4Click(Sender: TObject);
  100.     procedure SpeedButton2Click(Sender: TObject);
  101.     procedure SpeedButton3Click(Sender: TObject);
  102.     procedure CheckBox3Click(Sender: TObject);
  103.     procedure ComboBox1Change(Sender: TObject);
  104.     procedure Image1Click(Sender: TObject);
  105.     procedure ScrollBar2Change(Sender: TObject);
  106.     procedure Series28GetMarkText(Sender: TChartSeries;
  107.       ValueIndex: Integer; var MarkText: string);
  108.     procedure Button3Click(Sender: TObject);
  109.     procedure CheckBox4Click(Sender: TObject);
  110.     procedure FormShow(Sender: TObject);
  111.   private
  112.     { Private declarations }
  113.   public
  114.     { Public declarations }
  115.     tmpSeries,
  116.     tmpIndex,
  117.     tmpRandom,
  118.     tmpTimes:Longint;
  119.     Function TheChart:TChart;
  120.     Procedure HorizScroll(Const Percent:Double);
  121.     Procedure VertScroll(Const Percent:Double);
  122.     Procedure ScrollAxis(Axis:TChartAxis; Const Percent:Double);
  123.   end;
  124.  
  125. implementation
  126.  
  127. {$R *.DFM}
  128. Uses TeeAbout;
  129.  
  130. procedure TDemoForm.ListBox1Click(Sender: TObject);
  131. var t:Longint;
  132. begin
  133.   NoteBook1.PageIndex:=ListBox1.ItemIndex;
  134.   With TheChart do
  135.   begin
  136.     tmpTimes:=-1;
  137.     AnimatedZoom:=True;
  138.     AnimatedZoomSteps:=4;
  139.     for t:=0 to SeriesCount-1 do
  140.     With Series[t] do
  141.          FillSampleValues(NumSampleValues);
  142.     UndoZoom;
  143.     CheckBox1.Checked  :=View3D;
  144.     ScrollBar2.Enabled :=View3D;
  145.     ScrollBar2.Position:=Chart3DPercent;
  146.   end;
  147. end;
  148.  
  149. procedure TDemoForm.FormCreate(Sender: TObject);
  150. begin
  151.   tmpTimes:=-1;
  152.   ScrollBar1.Position:=Timer1.Interval;
  153.   ComboBox1.ItemIndex:=0;
  154.   ComboBox2.ItemIndex:=0;
  155.   ListBox1.ItemIndex :=0;
  156.   ListBox1Click(Self);
  157. end;
  158.  
  159. procedure TDemoForm.CheckBox1Click(Sender: TObject);
  160. begin
  161.   TheChart.View3D:=CheckBox1.Checked;
  162.   ScrollBar2.Enabled:=TheChart.View3D;
  163. end;
  164.  
  165. procedure TDemoForm.CheckBox2Click(Sender: TObject);
  166. begin
  167.   Timer1.Enabled:=CheckBox2.Checked;
  168.   ScrollBar1.Enabled:=Timer1.Enabled;
  169. end;
  170.  
  171. procedure TDemoForm.ScrollBar1Change(Sender: TObject);
  172. begin
  173.   Timer1.Interval:=ScrollBar1.Position;
  174. end;
  175.  
  176. Function TDemoform.TheChart:TChart;
  177. begin
  178.   with NoteBook1 do
  179.   result:=(Pages.Objects[PageIndex] as TPage).Controls[0] as TChart;
  180. end;
  181.  
  182. procedure TDemoForm.Timer1Timer(Sender: TObject);
  183. var t:Longint;
  184.     tmpX:Double;
  185. begin
  186.   With NoteBook1 do
  187.   Case PageIndex of
  188.      0,3,4,6:  With TheChart do
  189.                begin
  190.                  for t:=0 to SeriesCount-1 do
  191.                  With Series[t] do
  192.                  begin
  193.                    tmpX:=XValues[1]-XValues[0];
  194.                    Delete(0);
  195.                    AddXY( XValues.Last+tmpX,
  196.                           YValues.Last+Random(100)-50,'',clTeeColor);
  197.                  end;
  198.                end;
  199.      1,2,8:    With TheChart do
  200.                begin
  201.                  if (tmpTimes=-1) then
  202.                  begin
  203.                    tmpSeries:=Random(SeriesCount);
  204.                    tmpIndex :=Random(Series[tmpSeries].Count);
  205.                    tmpTimes :=Random(10);
  206.                    tmpRandom:=2*Round(Random(50)-25.0);
  207.                  end;
  208.                  if tmpSeries<>-1 then
  209.                  begin
  210.                    if PageIndex=8 then
  211.                    With (Series[tmpSeries] as TBubbleSeries) do
  212.                    begin
  213.                      tmpX:=RadiusValues[tmpIndex]+tmpRandom;
  214.                      if tmpX>=2 then
  215.                      begin
  216.                        RadiusValues[tmpIndex]:=tmpX;
  217.                        if tmpRandom>0 then tmpX:=XValues[tmpIndex]+1
  218.                                       else tmpX:=XValues[tmpIndex]-1;
  219.                        XValues[tmpIndex]:=tmpX;
  220.                        if Random(10)<5 then tmpX:=YValues[tmpIndex]+50
  221.                                        else tmpX:=YValues[tmpIndex]-50;
  222.                        YValues[tmpIndex]:=tmpX;
  223.                      end
  224.                      else tmpTimes:=0;
  225.                    end
  226.                    else
  227.                    With Series[tmpSeries].MandatoryValueList do
  228.                         Value[tmpIndex]:=Value[tmpIndex]+tmpRandom;
  229.                    Dec(tmpTimes);
  230.                    Repaint;
  231.                  end;
  232.                end;
  233.      5: (TheChart[0] as TPieSeries).Rotate(358);
  234.   end;
  235. end;
  236.  
  237. procedure TDemoForm.Button2Click(Sender: TObject);
  238. begin
  239.   Close;
  240. end;
  241.  
  242. procedure TDemoForm.BitBtn1Click(Sender: TObject);
  243. begin
  244.   TheChart.ZoomPercent(120);
  245.   Button3.Enabled:=True;
  246. end;
  247.  
  248. procedure TDemoForm.BitBtn2Click(Sender: TObject);
  249. begin
  250.   TheChart.ZoomPercent(80);
  251.   Button3.Enabled:=True;
  252. end;
  253.  
  254. Procedure TDemoForm.ScrollAxis(Axis:TChartAxis; Const Percent:Double);
  255. var Amount:Double;
  256. begin
  257.   With Axis do
  258.   begin
  259.     Amount:=-((Maximum-Minimum)/(100.0/Percent));
  260.     SetMinMax(Minimum-Amount,Maximum-Amount);
  261.   end;
  262. end;
  263.  
  264. Procedure TDemoForm.HorizScroll(Const Percent:Double);
  265. begin
  266.   ScrollAxis(TheChart.TopAxis,Percent);
  267.   ScrollAxis(TheChart.BottomAxis,Percent);
  268.   Button3.Enabled:=True;
  269. end;
  270.  
  271. Procedure TDemoForm.VertScroll(Const Percent:Double);
  272. begin
  273.   ScrollAxis(TheChart.LeftAxis,Percent);
  274.   ScrollAxis(TheChart.RightAxis,Percent);
  275.   Button3.Enabled:=True;
  276. end;
  277.  
  278. procedure TDemoForm.SpeedButton1Click(Sender: TObject);
  279. begin
  280.   HorizScroll(10);
  281. end;
  282.  
  283. procedure TDemoForm.SpeedButton4Click(Sender: TObject);
  284. begin
  285.   HorizScroll(-10);
  286. end;
  287.  
  288. procedure TDemoForm.SpeedButton2Click(Sender: TObject);
  289. begin
  290.   VertScroll(-10);
  291. end;
  292.  
  293. procedure TDemoForm.SpeedButton3Click(Sender: TObject);
  294. begin
  295.   VertScroll(10);
  296. end;
  297.  
  298. procedure TDemoForm.CheckBox3Click(Sender: TObject);
  299. begin
  300.   (TheChart[0] as TPieSeries).Circled:=CheckBox3.Checked;
  301. end;
  302.  
  303. procedure TDemoForm.ComboBox1Change(Sender: TObject);
  304. begin
  305.   With (TheChart[0] as TCustomBarSeries) do
  306.    MultiBar:=TMultiBar((Sender as TComboBox).ItemIndex);
  307. end;
  308.  
  309. procedure TDemoForm.Image1Click(Sender: TObject);
  310. begin
  311.   Timer1.Enabled:=False;
  312.   With TTeeAboutForm.Create(Self) do
  313.   try
  314.     ShowModal;
  315.   finally
  316.     Free;
  317.   end;
  318.   Timer1.Enabled:=True;
  319. end;
  320.  
  321. procedure TDemoForm.ScrollBar2Change(Sender: TObject);
  322. begin
  323.   TheChart.Chart3DPercent:=ScrollBar2.Position;
  324. end;
  325.  
  326. procedure TDemoForm.Series28GetMarkText(Sender: TChartSeries;
  327.   ValueIndex: Integer; var MarkText: string);
  328. begin
  329.    if ValueIndex=3 then MarkText:='USA' else
  330.    if ValueIndex=5 then MarkText:='UK' else
  331.    if ValueIndex=7 then MarkText:='Germany' else
  332.                         MarkText:='';
  333. end;
  334.  
  335. procedure TDemoForm.Button3Click(Sender: TObject);
  336. begin
  337.   TheChart.UndoZoom;
  338.   Button3.Enabled:=False;
  339. end;
  340.  
  341. procedure TDemoForm.CheckBox4Click(Sender: TObject);
  342. begin
  343.   Series11.Stairs:=CheckBox4.Checked;
  344.   Series12.Stairs:=CheckBox4.Checked;
  345. end;
  346.  
  347. procedure TDemoForm.FormShow(Sender: TObject);
  348. begin
  349.   Timer1.Enabled:=True;  { <-- start animation }
  350. end;
  351.  
  352. end.
  353.