Pagina iniziale A scuola di Delphi

Introduzione · Capitolo 1 · Capitolo 2 · Capitolo 3 · Capitolo 4 · Capitolo 5 · Download 

Sommario
Indovina numero
Sistema lineare
Figura
Distr. automatico
Potenze
Mcm
Scomp. in fattori
Numeri primi
 

Capitolo 2

Distributore automatico

L'applicazione rappresentata qui a destra θ una simulazione di un distributore automatico, con uno stato interno rappresentato dal credito.

L'utente seleziona il prodotto e inserisce le monete (digita il numero) nel campo Edit. Premendo il bottone il credito viene incrementato.
Se le monete inserite sono sufficienti, viene visualizzato il messaggio "Ritira il prodotto.", altrimenti viene visualizzato "La "+nome_prodotto+" costa 1 €, inserire ancora € "+monete_mancanti.

Tutti i componenti presenti sulla form sono giΰ stati visti in precedenza, e comunque sono elencati nel listato del programma.

La variabile privata credito (di tipo Currency) viene impostata a 0, quando il programma viene lanciato (evento OnCreate della form).

La procedura principale θ associata alla pressione del tasto Dammi la lattina. Viene letto il contenuto di EditMonete, se non θ vuoto, e memorizzato nella variabile monete.
Il credito viene incrementato con monete e se θ minore di 1, viene visualizzato il messaggio "La "+nome_prodotto+" costa 1 €, inserire ancora € "+monete_mancanti, altrimenti viene visualizzato il messaggio "Ritira il prodotto.".
Ogni volta viene visualizzato il credito aggiornato e il campo Edit viene svuotato (le monete spariscono).

unit UnitDistributoreAutomatico;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type
  TFormDistributoreAutomatico = class(TForm)
    RadioGroupSelezionaProdotto: TRadioGroup;
    LabelPrezzo: TLabel;
    LabelInserireMonete: TLabel;
    EditMonete: TEdit;
    ButtonDammiLattina: TButton;
    LabelMessaggio: TLabel;
    LabelCredito: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ButtonDammiLattinaClick(Sender: TObject);
  private
    { Private declarations }
    credito: Currency;
  public
    { Public declarations }
  end;

var
  FormDistributoreAutomatico: TFormDistributoreAutomatico;

implementation

{$R *.DFM}

procedure TFormDistributoreAutomatico.FormCreate
  (Sender: TObject);
begin
  credito:=0;
end;

procedure TFormDistributoreAutomatico.ButtonDammiLattinaClick
  (Sender: TObject);
var
  monete, mancanti: Currency;
begin
  if EditMonete.Text<>'' then
  begin
    monete:=StrToCurr(EditMonete.Text);
    credito:=credito+monete;
    if credito<1 then
    begin
      mancanti:=1-credito;
      case RadioGroupSelezionaProdotto.ItemIndex of
      0: LabelMessaggio.Caption:='La Coca Cola costa 1 €,
 inserire ancora € '+CurrToStr(mancanti);
      1: LabelMessaggio.Caption:='La Pepsi costa 1 €,
 inserire ancora € '+CurrToStr(mancanti);
      2: LabelMessaggio.Caption:='La Fanta costa 1 €,
 inserire ancora € '+CurrToStr(mancanti);
      3: LabelMessaggio.Caption:='La Sprite costa 1 €,
 inserire ancora € '+CurrToStr(mancanti);
      4: LabelMessaggio.Caption:='L''Estatθ costa 1 €,
 inserire ancora € '+CurrToStr(mancanti);
      end;
      LabelCredito.Caption:='Credito € '+CurrToStr(credito);
      EditMonete.Text:='';
    end
    else
    begin
      credito:=credito-1;
      LabelMessaggio.Caption:='Ritira il prodotto.';
      LabelCredito.Caption:='Credito € '+CurrToStr(credito);
      EditMonete.Text:='';
    end;
  end;
end;

end.

 2.04 - Distributore automatico