Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Lanci - gestore_del_form.pas

gestore_del_form.pas

Caricato da: Poggi Marco
Scarica il programma completo

  1. unit gestore_del_form;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ExtCtrls, grafica, balistica;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ImageCampoTiro: TImage;
  12.     LabeledEditVelocita: TLabeledEdit;
  13.     LabeledEditAngolo: TLabeledEdit;
  14.     ButtonTiro: TButton;
  15.     ButtonCancella: TButton;
  16.     LabelBalistica: TLabel;
  17.     procedure FormCreate(Sender: TObject);
  18.     procedure ButtonCancellaClick(Sender: TObject);
  19.     procedure ButtonTiroClick(Sender: TObject);
  20.   private
  21.     { Déclarations privées }
  22.     campo:ttavola;
  23.     procedure cancella;
  24.     procedure traccia(colpo:traiettoria);
  25.   public
  26.     { Déclarations publiques }
  27.   end;
  28.  
  29. var
  30.   Form1: TForm1;
  31.  
  32. implementation
  33.  
  34. {$R *.dfm}
  35.  
  36. function rimpiazza(messaggio:string; vecchio,nuovo:char):string;
  37. var i:integer;
  38. begin
  39.   i:=1;
  40.   while i <= length(messaggio) do
  41.   begin
  42.      if messaggio[i] = vecchio then
  43.         messaggio[i] := nuovo;
  44.      i:=i + 1;
  45.   end;
  46.   rimpiazza:=messaggio;
  47. end;
  48.  
  49. procedure TForm1.FormCreate(Sender: TObject);
  50. begin
  51.   campo:=ttavola.crea(ImageCampoTiro.Canvas, -10.0, -10.0, 2000.0);
  52.   campo.tinta:=$1030f0;
  53.   cancella;
  54.   self.Caption:='Lanci';    
  55. end;
  56.  
  57. procedure TForm1.cancella;
  58. begin
  59.   LabeledEditVelocita.Text:='';
  60.   LabeledEditAngolo.Text:='';
  61.   LabelBalistica.Caption:='';
  62.   campo.cancella($051006);
  63.   campo.spessore:=1;
  64.   campo.assi($808080);
  65.   campo.spessore:=2;
  66. end;
  67.  
  68. procedure TForm1.ButtonCancellaClick(Sender: TObject);
  69. begin
  70.   cancella;
  71.   LabeledEditVelocita.SetFocus;
  72. end;
  73.  
  74. procedure TForm1.traccia(colpo:traiettoria);
  75. var t0,volo,passo:double;
  76.     tratto:tSegmento;
  77. begin
  78.   t0:=0.0;
  79.   volo:=colpo.tempoVolo;
  80.   passo:=(volo - t0) / 800.0;
  81.   colpo.calcolo(tratto.inizio, t0);
  82.   while t0 < volo do
  83.   begin
  84.     t0:=t0 + passo;
  85.     colpo.calcolo(tratto.fine, t0);
  86.     campo.linea(tratto);
  87.     tratto.inizio:=tratto.fine;
  88.   end;
  89. end;
  90.  
  91. procedure TForm1.ButtonTiroClick(Sender: TObject);
  92. var colpo:traiettoria;
  93.     velocita,angolo:double;
  94. begin
  95.   velocita:=StrToFloatDef(rimpiazza(LabeledEditVelocita.Text, '.', ','), -10.0);
  96.   angolo:=StrToFloatDef(rimpiazza(LabeledEditAngolo.Text, '.', ','), -10.0);
  97.   if (velocita > 10) and (velocita < 170) and (angolo > 1) and (angolo < 80) then
  98.   begin
  99.      colpo.celere:=velocita;
  100.      colpo.alzata:=angolo;
  101.      traccia(colpo);
  102.      LabelBalistica.Caption:=format('Tempo di volo: %0.3f s; gittata: %0.2f m; altezza massima: %0.2f m', [colpo.tempoVolo, colpo.gittata, colpo.altezzaMassima]);
  103.   end
  104.   else
  105.   begin
  106.     cancella;
  107.     LabelBalistica.Caption:='I valori inseriti non sono corretti.';
  108.     LabeledEditVelocita.SetFocus;
  109.   end;
  110. end;
  111.  
  112. end.