home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SAMPLES.DAT / SAMPLES / GEOM3D / GEOMU1.PAS < prev    next >
Pascal/Delphi Source File  |  1997-03-19  |  3KB  |  137 lines

  1. Unit GeomU1;
  2.  
  3. Interface
  4.  
  5. Uses
  6.   Classes, Forms, Graphics, TabCtrls, StdCtrls, ExtCtrls, Buttons,
  7.   Vector,Dialogs;
  8.  
  9. Type
  10.   TDemoForm = Class (TForm)
  11.     TabbedNotebook1: TTabbedNotebook;
  12.     Memo1: TMemo;
  13.     Label1: TLabel;
  14.     Label2: TLabel;
  15.     Label3: TLabel;
  16.     Label4: TLabel;
  17.     Label5: TLabel;
  18.     Bevel1: TBevel;
  19.     Label6: TLabel;
  20.     Label7: TLabel;
  21.     Label8: TLabel;
  22.     ax: TEdit;
  23.     ay: TEdit;
  24.     az: TEdit;
  25.     Label9: TLabel;
  26.     Label10: TLabel;
  27.     Label11: TLabel;
  28.     Label12: TLabel;
  29.     Label13: TLabel;
  30.     Label14: TLabel;
  31.     Label15: TLabel;
  32.     Label16: TLabel;
  33.     Label17: TLabel;
  34.     bx: TEdit;
  35.     by: TEdit;
  36.     bz: TEdit;
  37.     Label18: TLabel;
  38.     Label19: TLabel;
  39.     a_Plus_b: TLabel;
  40.     Label20: TLabel;
  41.     a_Minus_b: TLabel;
  42.     BitBtn1: TBitBtn;
  43.     Label22: TLabel;
  44.     a_Mul_b: TLabel;
  45.     Label24: TLabel;
  46.     a_Cross_b: TLabel;
  47.     Label26: TLabel;
  48.     Amount_a: TLabel;
  49.     Label28: TLabel;
  50.     Label29: TLabel;
  51.     a_Normalized: TLabel;
  52.     Amount_a_Cross_b: TLabel;
  53.     Procedure Form1OnCreate (Sender: TObject);
  54.     Procedure BitBtn1OnClick (Sender: TObject);
  55.     Procedure Label20OnClick (Sender: TObject);
  56.   Private
  57.     {Insert private declarations here}
  58.   Public
  59.     {Insert public declarations here}
  60.     Function GetVectorValues(Var a,b:TVector):Boolean;
  61.   End;
  62.  
  63. Var
  64.   DemoForm: TDemoForm;
  65.  
  66. Implementation
  67.  
  68. //gets the vector values from the entry fields
  69. Procedure TDemoForm.Form1OnCreate (Sender: TObject);
  70. Begin
  71.   tostrdigits:=4; //we only want 4 decimal digits
  72. End;
  73.  
  74. Function TDemoForm.GetVectorValues(Var a,b:TVector):Boolean;
  75. Var
  76.    x,y,z:Extended;
  77.    c:Integer;
  78. Begin
  79.     result:=False;
  80.  
  81.     Val(ax.Text,x,c);
  82.     If c<>0 Then exit;
  83.     Val(ay.Text,y,c);
  84.     If c<>0 Then exit;
  85.     Val(az.Text,z,c);
  86.     If c<>0 Then exit;
  87.     a.Create(x,y,z);
  88.  
  89.     Val(bx.Text,x,c);
  90.     If c<>0 Then exit;
  91.     Val(by.Text,y,c);
  92.     If c<>0 Then exit;
  93.     Val(bz.Text,z,c);
  94.     If c<>0 Then exit;
  95.     b.Create(x,y,z);
  96.  
  97.     result:=True;
  98. End;
  99.  
  100. //Update button inside the "Vectors" page
  101. Procedure TDemoForm.BitBtn1OnClick (Sender: TObject);
  102. Var a,b:TVector;
  103. Begin
  104.     If not GetVectorValues(a,b) Then
  105.     Begin
  106.        ErrorBox('Values of vector(s) invalid or not completely filled in !');
  107.        a_Plus_b.Text:='not available';
  108.        a_Minus_b.Text:='not available';
  109.        a_Mul_b.Text:='not available';
  110.        a_Cross_b.Text:='not available';
  111.        Amount_a.Text:='not available';
  112.        Amount_a_Cross_b.Text:='not available';
  113.        a_Normalized.Text:='not available';
  114.     End
  115.     Else
  116.     Begin
  117.        a_Plus_b.Text:=(a+b).tostr;
  118.        a_Minus_b.Text:=(a-b).tostr;
  119.        a_Mul_b.Text:=tostr((a*b):0:tostrdigits);
  120.        a_Cross_b.Text:=tostr((a#b).Amount:0:tostrdigits);
  121.        Amount_a.Text:=tostr(a.Amount:0:tostrdigits);
  122.        Amount_a_Cross_b.Text:=tostr((a#b).Amount:0:tostrdigits);
  123.        a.Normalize;
  124.        a_Normalized.Text:=a.tostr;
  125.     End;
  126. End;
  127.  
  128. Procedure TDemoForm.Label20OnClick (Sender: TObject);
  129. Begin
  130.  
  131. End;
  132.  
  133. Initialization
  134.   RegisterClasses ([TDemoForm, TTabbedNotebook, TMemo, TLabel, TBevel, TEdit,
  135.     TBitBtn]);
  136. End.
  137.