home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / TeeChartPro / TeeChart5Delphi5Eval.exe / %MAINDIR% / Examples / Features / Surface_Hole.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-09-10  |  2.9 KB  |  118 lines

  1. unit Surface_Hole;
  2.  
  3. interface
  4.  
  5. uses
  6.   Wintypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs,  StdCtrls, Buttons, TeEngine, TeeSurfa, ExtCtrls, TeeProcs, Chart,
  8.   TeeComma;
  9.  
  10. type
  11.   TSurfaceHolesForm = class(TForm)
  12.     Chart1: TChart;
  13.     Series1: TSurfaceSeries;
  14.     Timer1: TTimer;
  15.     TeeCommander1: TTeeCommander;
  16.     Panel1: TPanel;
  17.     BitBtn1: TBitBtn;
  18.     BitBtn2: TBitBtn;
  19.     CheckBox1: TCheckBox;
  20.     CheckBox2: TCheckBox;
  21.     procedure BitBtn1Click(Sender: TObject);
  22.     procedure BitBtn2Click(Sender: TObject);
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure Timer1Timer(Sender: TObject);
  25.     procedure CheckBox1Click(Sender: TObject);
  26.     procedure CheckBox2Click(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.     Angle   : Integer;
  30.     Delta3D : Integer;
  31.   public
  32.     { Public declarations }
  33.   end;
  34.  
  35. implementation
  36.  
  37. {$R *.DFM}
  38.  
  39. procedure TSurfaceHolesForm.BitBtn1Click(Sender: TObject);
  40. var x,z:Integer;
  41.     tmp:Double;
  42. begin
  43.   CheckBox1.Enabled:=True;
  44.   Series1.Clear;
  45.   for x:=1 to 10 do
  46.     for z:=1 to 10 do
  47.     begin
  48.       tmp:=cos(x/10.0)*sin(z/10.0);
  49.       Series1.AddXYZ( x, tmp, z, '', clTeeColor );
  50.     end;
  51. end;
  52.  
  53. procedure TSurfaceHolesForm.BitBtn2Click(Sender: TObject);
  54. var x,z:Integer;
  55.     tmp:Double;
  56. begin
  57.   CheckBox1.Enabled:=True;
  58.   Series1.Clear;
  59.   for x:=1 to 10 do
  60.     for z:=1 to 10 do
  61.     begin
  62.       tmp:=cos(x/10.0)*sin(z/10.0);
  63.       { apply hole at cells (5,5) to (6,6) }
  64.       if ((x=5) or (x=6)) and ((z=5) or (z=6)) then
  65.          Series1.AddXYZ( x, tmp, z, '', clNone )  { <-- NULL cell }
  66.       else
  67.          Series1.AddXYZ( x, tmp, z, '', clTeeColor );
  68.     end;
  69. end;
  70.  
  71. procedure TSurfaceHolesForm.FormCreate(Sender: TObject);
  72. begin
  73.   Angle:=0;
  74.   Delta3D:=1;
  75.   Series1.NumXValues:=10;
  76.   Series1.NumZValues:=10;
  77.   Chart1.LeftAxis.Increment:=0.1;
  78.   Chart1.BottomAxis.Increment:=1;
  79.   Chart1.BottomAxis.LabelsSeparation:=0;
  80.   BitBtn2Click(Self);
  81. end;
  82.  
  83. procedure TSurfaceHolesForm.Timer1Timer(Sender: TObject);
  84. var tmpY,tmpX:Double;
  85. begin
  86.   Angle:=Angle+5;
  87.   if Angle>359 then Angle:=0;
  88.   With Chart1 do
  89.   begin
  90.     Chart3DPercent:=Chart3DPercent+Delta3D;
  91.     if (Chart3DPercent<5) or (Chart3DPercent>60) then Delta3D:=-Delta3D;
  92.   end;
  93.   With Series1.XValues do
  94.   begin
  95.     tmpX:=Sin(Angle*Pi/180.0);
  96.     Chart1.BottomAxis.SetMinMax(MinValue-tmpX,MaxValue-tmpX);
  97.   end;
  98.   With Series1.YValues do
  99.   begin
  100.     tmpY:=Cos(Angle*Pi/180.0)*((MaxValue-MinValue)/10.0);
  101.     Chart1.LeftAxis.SetMinMax(MinValue-tmpY,MaxValue-tmpY);
  102.   end;
  103. end;
  104.  
  105. procedure TSurfaceHolesForm.CheckBox1Click(Sender: TObject);
  106. begin
  107.   Timer1.Enabled:=CheckBox1.Checked;
  108. end;
  109.  
  110. procedure TSurfaceHolesForm.CheckBox2Click(Sender: TObject);
  111. begin
  112.   Chart1.BackWall.Transparent:=not CheckBox2.Checked;
  113. end;
  114.  
  115. initialization
  116.   RegisterClass(TSurfaceHolesForm);
  117. end.
  118.