home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / AddOns / Components / TEECHART / Delphi1_And_Delphi2 / EXAMPLES / STANDARD / TEEBASIC.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-24  |  11.0 KB  |  403 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.     Timer1: TTimer;
  68.     ScrollBar1: TScrollBar;
  69.     Label1: TLabel;
  70.     BitBtn1: TBitBtn;
  71.     BitBtn2: TBitBtn;
  72.     SpeedButton1: TSpeedButton;
  73.     SpeedButton2: TSpeedButton;
  74.     SpeedButton3: TSpeedButton;
  75.     SpeedButton4: TSpeedButton;
  76.     Label2: TLabel;
  77.     Label3: TLabel;
  78.     CheckBox3: TCheckBox;
  79.     ComboBox1: TComboBox;
  80.     ComboBox2: TComboBox;
  81.     ScrollBar2: TScrollBar;
  82.     Button3: TButton;
  83.     CheckBox4: TCheckBox;
  84.     Label4: TLabel;
  85.     Label5: TLabel;
  86.     ScrollBar3: TScrollBar;
  87.     Label8: TLabel;
  88.     Label9: TLabel;
  89.     ScrollBar4: TScrollBar;
  90.     Label10: TLabel;
  91.     ScrollBar5: TScrollBar;
  92.     Series25: TChartShape;
  93.     Series33: TChartShape;
  94.     Series34: TChartShape;
  95.     Series35: TChartShape;
  96.     procedure ListBox1Click(Sender: TObject);
  97.     procedure FormCreate(Sender: TObject);
  98.     procedure CheckBox1Click(Sender: TObject);
  99.     procedure CheckBox2Click(Sender: TObject);
  100.     procedure ScrollBar1Change(Sender: TObject);
  101.     procedure Timer1Timer(Sender: TObject);
  102.     procedure Button2Click(Sender: TObject);
  103.     procedure BitBtn1Click(Sender: TObject);
  104.     procedure BitBtn2Click(Sender: TObject);
  105.     procedure SpeedButton1Click(Sender: TObject);
  106.     procedure SpeedButton4Click(Sender: TObject);
  107.     procedure SpeedButton2Click(Sender: TObject);
  108.     procedure SpeedButton3Click(Sender: TObject);
  109.     procedure CheckBox3Click(Sender: TObject);
  110.     procedure ComboBox1Change(Sender: TObject);
  111.     procedure Image1Click(Sender: TObject);
  112.     procedure ScrollBar2Change(Sender: TObject);
  113.     procedure Series28GetMarkText(Sender: TChartSeries;
  114.       ValueIndex: Integer; var MarkText: string);
  115.     procedure Button3Click(Sender: TObject);
  116.     procedure CheckBox4Click(Sender: TObject);
  117.     procedure FormShow(Sender: TObject);
  118.     procedure ScrollBar3Change(Sender: TObject);
  119.     procedure ScrollBar4Change(Sender: TObject);
  120.     procedure ScrollBar5Change(Sender: TObject);
  121.   private
  122.     { Private declarations }
  123.   public
  124.     { Public declarations }
  125.     tmpSeries,
  126.     tmpIndex,
  127.     tmpRandom,
  128.     tmpTimes:Longint;
  129.     Function TheChart:TChart;
  130.     Procedure HorizScroll(Const Percent:Double);
  131.     Procedure VertScroll(Const Percent:Double);
  132.     Procedure ScrollAxis(Axis:TChartAxis; Const Percent:Double);
  133.   end;
  134.  
  135. implementation
  136.  
  137. {$R *.DFM}
  138. Uses TeeAbout;
  139.  
  140. procedure TDemoForm.ListBox1Click(Sender: TObject);
  141. var t:Longint;
  142. begin
  143.   NoteBook1.PageIndex:=ListBox1.ItemIndex;
  144.   With TheChart do
  145.   begin
  146.     tmpTimes:=-1;
  147.     AnimatedZoom:=True;
  148.     AnimatedZoomSteps:=4;
  149.     for t:=0 to SeriesCount-1 do
  150.     With Series[t] do
  151.          FillSampleValues(NumSampleValues);
  152.     UndoZoom;
  153.     CheckBox1.Checked  :=View3D;
  154.     ScrollBar2.Enabled :=View3D;
  155.     ScrollBar2.Position:=Chart3DPercent;
  156.     if Series[0] is TPieSeries then
  157.        ScrollBar3.Position:=View3DOptions.Elevation
  158.     else
  159.        ScrollBar3.Position:=View3DOptions.Rotation;
  160.     ScrollBar4.Position:=View3DOptions.Elevation;
  161.     ScrollBar5.Position:=View3DOptions.Perspective;
  162.     ScrollBar3.Enabled:=View3D;
  163.     ScrollBar4.Enabled:=View3D;
  164.     ScrollBar5.Enabled:=View3D;
  165.   end;
  166. end;
  167.  
  168. procedure TDemoForm.FormCreate(Sender: TObject);
  169. begin
  170.   tmpTimes:=-1;
  171.   ScrollBar1.Position:=Timer1.Interval;
  172.   ComboBox1.ItemIndex:=0;
  173.   ComboBox2.ItemIndex:=0;
  174.   ListBox1.ItemIndex :=0;
  175.   ListBox1Click(Self);
  176. end;
  177.  
  178. procedure TDemoForm.CheckBox1Click(Sender: TObject);
  179. begin
  180.   TheChart.View3D:=CheckBox1.Checked;
  181.   ScrollBar2.Enabled:=TheChart.View3D;
  182.   ScrollBar3.Enabled:=TheChart.View3D;
  183.   ScrollBar4.Enabled:=TheChart.View3D;
  184.   ScrollBar5.Enabled:=TheChart.View3D;
  185. end;
  186.  
  187. procedure TDemoForm.CheckBox2Click(Sender: TObject);
  188. begin
  189.   Timer1.Enabled:=CheckBox2.Checked;
  190.   ScrollBar1.Enabled:=Timer1.Enabled;
  191. end;
  192.  
  193. procedure TDemoForm.ScrollBar1Change(Sender: TObject);
  194. begin
  195.   Timer1.Interval:=ScrollBar1.Position;
  196. end;
  197.  
  198. Function TDemoform.TheChart:TChart;
  199. begin
  200.   with NoteBook1 do
  201.   result:=(Pages.Objects[PageIndex] as TPage).Controls[0] as TChart;
  202. end;
  203.  
  204. procedure TDemoForm.Timer1Timer(Sender: TObject);
  205. var t:Longint;
  206.     tmpX:Double;
  207. begin
  208.   With NoteBook1 do
  209.   Case PageIndex of
  210.      0,3,4,6:  With TheChart do
  211.                begin
  212.                  for t:=0 to SeriesCount-1 do
  213.                  With Series[t] do
  214.                  begin
  215.                    tmpX:=XValues[1]-XValues[0];
  216.                    Delete(0);
  217.                    AddXY( XValues.Last+tmpX,
  218.                           YValues.Last+Random(100)-50,'',clTeeColor);
  219.                  end;
  220.                end;
  221.      1,2,8:    With TheChart do
  222.                begin
  223.                  if (tmpTimes=-1) then
  224.                  begin
  225.                    tmpSeries:=Random(SeriesCount);
  226.                    tmpIndex :=Random(Series[tmpSeries].Count);
  227.                    tmpTimes :=Random(10);
  228.                    tmpRandom:=2*Round(Random(50)-25.0);
  229.                  end;
  230.                  if tmpSeries<>-1 then
  231.                  begin
  232.                    if PageIndex=8 then
  233.                    With (Series[tmpSeries] as TBubbleSeries) do
  234.                    begin
  235.                      tmpX:=RadiusValues[tmpIndex]+tmpRandom;
  236.                      if tmpX>=2 then
  237.                      begin
  238.                        RadiusValues[tmpIndex]:=tmpX;
  239.                        if tmpRandom>0 then tmpX:=XValues[tmpIndex]+1
  240.                                       else tmpX:=XValues[tmpIndex]-1;
  241.                        XValues[tmpIndex]:=tmpX;
  242.                        if Random(10)<5 then tmpX:=YValues[tmpIndex]+50
  243.                                        else tmpX:=YValues[tmpIndex]-50;
  244.                        YValues[tmpIndex]:=tmpX;
  245.                      end
  246.                      else tmpTimes:=0;
  247.                    end
  248.                    else
  249.                    With Series[tmpSeries].MandatoryValueList do
  250.                         Value[tmpIndex]:=Value[tmpIndex]+tmpRandom;
  251.                    Dec(tmpTimes);
  252.                    Repaint;
  253.                  end;
  254.                end;
  255.      5: (TheChart[0] as TPieSeries).Rotate(358);
  256.   end;
  257. end;
  258.  
  259. procedure TDemoForm.Button2Click(Sender: TObject);
  260. begin
  261.   Close;
  262. end;
  263.  
  264. procedure TDemoForm.BitBtn1Click(Sender: TObject);
  265. begin
  266.   TheChart.ZoomPercent(120);
  267.   Button3.Enabled:=True;
  268. end;
  269.  
  270. procedure TDemoForm.BitBtn2Click(Sender: TObject);
  271. begin
  272.   TheChart.ZoomPercent(80);
  273.   Button3.Enabled:=True;
  274. end;
  275.  
  276. Procedure TDemoForm.ScrollAxis(Axis:TChartAxis; Const Percent:Double);
  277. var Amount:Double;
  278. begin
  279.   With Axis do
  280.   begin
  281.     Amount:=-((Maximum-Minimum)/(100.0/Percent));
  282.     SetMinMax(Minimum-Amount,Maximum-Amount);
  283.   end;
  284. end;
  285.  
  286. Procedure TDemoForm.HorizScroll(Const Percent:Double);
  287. begin
  288.   ScrollAxis(TheChart.TopAxis,Percent);
  289.   ScrollAxis(TheChart.BottomAxis,Percent);
  290.   Button3.Enabled:=True;
  291. end;
  292.  
  293. Procedure TDemoForm.VertScroll(Const Percent:Double);
  294. begin
  295.   ScrollAxis(TheChart.LeftAxis,Percent);
  296.   ScrollAxis(TheChart.RightAxis,Percent);
  297.   Button3.Enabled:=True;
  298. end;
  299.  
  300. procedure TDemoForm.SpeedButton1Click(Sender: TObject);
  301. begin
  302.   HorizScroll(10);
  303. end;
  304.  
  305. procedure TDemoForm.SpeedButton4Click(Sender: TObject);
  306. begin
  307.   HorizScroll(-10);
  308. end;
  309.  
  310. procedure TDemoForm.SpeedButton2Click(Sender: TObject);
  311. begin
  312.   VertScroll(-10);
  313. end;
  314.  
  315. procedure TDemoForm.SpeedButton3Click(Sender: TObject);
  316. begin
  317.   VertScroll(10);
  318. end;
  319.  
  320. procedure TDemoForm.CheckBox3Click(Sender: TObject);
  321. begin
  322.   (TheChart[0] as TPieSeries).Circled:=CheckBox3.Checked;
  323. end;
  324.  
  325. procedure TDemoForm.ComboBox1Change(Sender: TObject);
  326. begin
  327.   With (TheChart[0] as TCustomBarSeries) do
  328.    MultiBar:=TMultiBar((Sender as TComboBox).ItemIndex);
  329. end;
  330.  
  331. procedure TDemoForm.Image1Click(Sender: TObject);
  332. begin
  333.   Timer1.Enabled:=False;
  334.   TeeShowAboutBox(True);
  335.   Timer1.Enabled:=True;
  336. end;
  337.  
  338. procedure TDemoForm.ScrollBar2Change(Sender: TObject);
  339. begin
  340.   TheChart.Chart3DPercent:=ScrollBar2.Position;
  341. end;
  342.  
  343. procedure TDemoForm.Series28GetMarkText(Sender: TChartSeries;
  344.   ValueIndex: Integer; var MarkText: string);
  345. begin
  346.    if ValueIndex=3 then MarkText:='USA' else
  347.    if ValueIndex=5 then MarkText:='UK' else
  348.    if ValueIndex=7 then MarkText:='Germany' else
  349.                         MarkText:='';
  350. end;
  351.  
  352. procedure TDemoForm.Button3Click(Sender: TObject);
  353. begin
  354.   TheChart.UndoZoom;
  355.   Button3.Enabled:=False;
  356. end;
  357.  
  358. procedure TDemoForm.CheckBox4Click(Sender: TObject);
  359. begin
  360.   Series11.Stairs:=CheckBox4.Checked;
  361.   Series12.Stairs:=CheckBox4.Checked;
  362. end;
  363.  
  364. procedure TDemoForm.FormShow(Sender: TObject);
  365. begin
  366.   Timer1.Enabled:=True;  { <-- start animation }
  367. end;
  368.  
  369. procedure TDemoForm.ScrollBar3Change(Sender: TObject);
  370. begin
  371.   if ScrollBar3.Enabled then
  372.   With TheChart.View3DOptions do
  373.   begin
  374.     Orthogonal:=False;
  375.     if TheChart[0] is TPieSeries then
  376.        Elevation:=ScrollBar3.Position
  377.     else
  378.        Rotation:=ScrollBar3.Position;
  379.   end;
  380. end;
  381.  
  382. procedure TDemoForm.ScrollBar4Change(Sender: TObject);
  383. begin
  384.   if ScrollBar4.Enabled then
  385.   With TheChart.View3DOptions do
  386.   begin
  387.     Orthogonal:=False;
  388.     Elevation:=ScrollBar4.Position;
  389.   end;
  390. end;
  391.  
  392. procedure TDemoForm.ScrollBar5Change(Sender: TObject);
  393. begin
  394.   if ScrollBar5.Enabled then
  395.   With TheChart.View3DOptions do
  396.   begin
  397.     Orthogonal:=False;
  398.     Perspective:=ScrollBar5.Position;
  399.   end;
  400. end;
  401.  
  402. end.
  403.