Delphi --- Aliohjelma

//Aliohjelma esimerkissä tehdään seuraava ohjelma:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    Shape1: TShape;
    Edit3: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn2: TBitBtn;
    Bevel1: TBevel;
    procedure BitBtn1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit3KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  luku1,luku2,summa : Extended; //muuttujat yleisellä tasolla
  procedure laske;              //aliohjelma esitellään

implementation

///////////////////////aliohjelma laske alkaa
 procedure laske;
 begin
   summa := luku1+luku2;
 end;
///////////////////////aliohjelma laske loppuu

 {$R *.DFM}

// Formin ominaisuudet:
// BorderIcons... biMaximize...False =  ei voi suurentaa napilla
// BorderStyle... bsSingle = ei voi venyttää hiirellä
// Position... poScreenCenter = lomake luodaan aina keskelle

procedure TForm1.BitBtn1Click(Sender: TObject);
  begin
    luku1 := StrToFloat(Edit1.Text); //muuttujiin asetetaan arvot
    luku2 := StrToFloat(Edit2.Text);
    laske;                           //kutsutaan aliohjelmaa
    Edit3.Text := FloatToStr(summa); //Edit3:seen aliohjelman laskema arvo
  end;
 

//kenttiin voi syöttää 0-9,peruutus,enter ja pilkku
//Edit3:sen ReadOnly ominaisuus laitetaan Trueksi (tumpelosuoja)
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  begin
    if not (key in ['0'..'9',#8,#13,#44]) then Key := #0;
 //jos enteriä painetaan ja Edit1:sessä on jotain, vaihdetaan toiseen kenttään
    if (key = chr(13)) and (Edit1.Text <> '') then 
      begin
        Edit2.SetFocus;
      end;
  end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
  begin
    if not (key in ['0'..'9',#8,#13,#44]) then Key := #0;
    if key = chr(13) then
//enterillä lasketaan vain jos molemmissa kentissä on jotain
      begin
        if (Edit1.Text <> '') and (Edit2.Text <> '') then
          begin
            BitBtn1.Click; //simuloi laske napin painallusta
            Edit3.SetFocus;//käytettävyyden takia focus Edit3:seen
          end;
      end;
  end;
 

procedure TForm1.BitBtn2Click(Sender: TObject);
  begin
    Edit1.Clear; //tyhjennetään kaikki kentät
    Edit2.Clear;
    Edit3.Clear;
    Edit1.SetFocus; //focus siirretään Edit1 kenttään
  end;

//Ota huomioon koodin paikka (KeyDown)
procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
    begin
//käytettävyyden takia otetaan delete-näppäin käyttöön
      if key = VK_DELETE then BitBtn2.Click; //simuloi tyhjennä-nappia
    end;

end.