home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / AddOns / Components / TEECHART / Delphi1_And_Delphi2 / EXAMPLES / EXTENDED / USURFHOL.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-24  |  2.8 KB  |  119 lines

  1. unit usurfhol;
  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.     BitBtn1: TBitBtn;
  15.     BitBtn2: TBitBtn;
  16.     Button1: TButton;
  17.     CheckBox1: TCheckBox;
  18.     Timer1: TTimer;
  19.     TeeCommander1: TTeeCommander;
  20.     procedure BitBtn1Click(Sender: TObject);
  21.     procedure BitBtn2Click(Sender: TObject);
  22.     procedure FormCreate(Sender: TObject);
  23.     procedure Button1Click(Sender: TObject);
  24.     procedure Timer1Timer(Sender: TObject);
  25.     procedure CheckBox1Click(Sender: TObject);
  26.   private
  27.     { Private declarations }
  28.   public
  29.     { Public declarations }
  30.     Angle,Delta3D:Integer;
  31.  
  32.   end;
  33.  
  34. var
  35.   SurfaceHolesForm: TSurfaceHolesForm;
  36.  
  37. implementation
  38.  
  39. {$R *.DFM}
  40.  
  41. procedure TSurfaceHolesForm.BitBtn1Click(Sender: TObject);
  42. var x,z:Integer;
  43.     tmp:Double;
  44. begin
  45.   CheckBox1.Enabled:=True;
  46.   Series1.UseColorRange:=True;
  47.   Series1.Clear;
  48.   for x:=1 to 10 do
  49.     for z:=1 to 10 do
  50.     begin
  51.       tmp:=cos(x/10.0)*sin(z/10.0);
  52.       Series1.AddXYZ( x, tmp, z, '', clTeeColor );
  53.     end;
  54. end;
  55.  
  56. procedure TSurfaceHolesForm.BitBtn2Click(Sender: TObject);
  57. var x,z:Integer;
  58.     tmp:Double;
  59. begin
  60.   CheckBox1.Enabled:=True;
  61.   Series1.UseColorRange:=False;  { <-- NOT NECESSARY in TeeChart 3.1 }
  62.   Series1.Clear;
  63.   for x:=1 to 10 do
  64.     for z:=1 to 10 do
  65.     begin
  66.       tmp:=cos(x/10.0)*sin(z/10.0);
  67.       { apply hole at cells (5,5) to (6,6) }
  68.       if ((x=5) or (x=6)) and ((z=5) or (z=6)) then
  69.          Series1.AddXYZ( x, tmp, z, '', clNone )
  70.       else
  71.          Series1.AddXYZ( x, tmp, z, '', clTeeColor );
  72.     end;
  73. end;
  74.  
  75. procedure TSurfaceHolesForm.FormCreate(Sender: TObject);
  76. begin
  77.   Angle:=0;
  78.   Delta3D:=1;
  79.   Series1.NumXValues:=10;
  80.   Series1.NumZValues:=10;
  81.   Chart1.LeftAxis.Increment:=0.1;
  82.   Chart1.BottomAxis.Increment:=1;
  83.   Chart1.BottomAxis.LabelsSeparation:=0;
  84. end;
  85.  
  86. procedure TSurfaceHolesForm.Button1Click(Sender: TObject);
  87. begin
  88.   Close;
  89. end;
  90.  
  91. procedure TSurfaceHolesForm.Timer1Timer(Sender: TObject);
  92. var tmpY,tmpX:Double;
  93. begin
  94.   Angle:=Angle+5;
  95.   if Angle>359 then Angle:=0;
  96.   With Chart1 do
  97.   begin
  98.     Chart3DPercent:=Chart3DPercent+Delta3D;
  99.     if (Chart3DPercent<5) or (Chart3DPercent>60) then Delta3D:=-Delta3D;
  100.   end;
  101.   With Series1.XValues do
  102.   begin
  103.     tmpX:=Sin(Angle*Pi/180.0);
  104.     Chart1.BottomAxis.SetMinMax(MinValue-tmpX,MaxValue-tmpX);
  105.   end;
  106.   With Series1.YValues do
  107.   begin
  108.     tmpY:=Cos(Angle*Pi/180.0)*((MaxValue-MinValue)/10.0);
  109.     Chart1.LeftAxis.SetMinMax(MinValue-tmpY,MaxValue-tmpY);
  110.   end;
  111. end;
  112.  
  113. procedure TSurfaceHolesForm.CheckBox1Click(Sender: TObject);
  114. begin
  115.   Timer1.Enabled:=CheckBox1.Checked;
  116. end;
  117.  
  118. end.
  119.