2. Procedúry

Napíšte program, ktorý bude prostredníctvom klikania na tlačidlá vykonávať matematické operácie pre zadané dvojice čísel. Po výpočte zobrazí výsledok a vyčistí obsah editov. Históriu výpočtov uchovávajte v listboxe.

V prostredí Delphi pracujeme s podprogramami (a konkrétne s procedúrami) už od začiatku. Možno ste si to neuvedomili, no všetky príkazy, ktoré sme doposiaľ zapisovali, sa vkladali do tela udalostnej procedúry (obvykle šlo o udalosť kliknutia na tlačidlo) patriacej formuláru, na ktorom bol umiestnený komponent, ktorého udalosť sme využívali.

Procedúry patriace formuláru sú umiestnené v samostatnom súbore – unite. Každý unit pozostáva z dvoch základných častí:

- interface (rozhranie) – obsahuje zoznam použitých unitov (iných), z ktorých sa v aktuálnom formulári využívajú komponenty i podprogramy, ďalej zoznam typov a v rámci definovaného typu pre formulár (TFormx) i zoznam podprogramov, ktoré sú preň vytvorené. Sekciu končí deklaračná časť.

- implementation – implementačná časť obsahuje zdrojový kód podprogramov definovaných v časti interface.

 

Obr. Zdrojový kód formulára/unitu

Pri vytváraní vlastného podprogramu ho budeme aspoň spočiatku viazať na formulár (unit), v ktorom ho vytvárame – zjednoduší sa nám prístup ku komponentom (pokiaľ sa na ne budeme v rámci podprogramu odvolávať) a zlepší sa prehľadnosť kódu. Pri zápise v implementačnej časti budeme pred názov vkladať jeho vlastníka (napr. TForm1), do interface ho budeme vkladať ako súčasť triedy TForm1, už bez vlastníka.

Procedúra na vyčistenie Editov potom môže vyzerať podpobne ako na obrázku.

 

Obr. Procedúra VycistiEdity


Samotný výpočet odohrávajúci sa napr. pri kliknutí na tlačidlo zabezpečujúce sčítanie môže vyzerať nasledovne:

procedure TForm1.Button1Click(Sender:TObject);
var a,b,vysledok:integer;

riadok:string;

begin
  a:=StrToInt(Edit1.Text);
 b:=StrToInt(Edit2.Text)
 vysledok
:=a+b;
 Label1.Caption:=IntToStr(vysledok);
 riadok:=Edit1.Text+’+’+Edit2.Text+’=’+IntToStr(vysledok);
 Listbox1.Items.Add(riadok);
 VycistiEdity;

end;