unit mymenu; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TCashreg = class(TForm) a: TButton; b: TButton; c: TButton; d: TButton; e: TButton; f: TButton; g: TButton; h: TButton; i: TButton; j: TButton; lburgernum: TLabel; lfliesnum: TLabel; ltripenum: TLabel; ltunanum: TLabel; lroachnum: TLabel; Bevel2: TBevel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; lburgercost: TLabel; lfliescost: TLabel; ltripecost: TLabel; ltunacost: TLabel; lroachcost: TLabel; Label16: TLabel; Label17: TLabel; Bevel1: TBevel; Bevel3: TBevel; Bevel4: TBevel; Bevel5: TBevel; Bevel6: TBevel; Bevel7: TBevel; Bevel8: TBevel; Label1: TLabel; Label2: TLabel; Label3: TLabel; nine: TButton; eight: TButton; seven: TButton; six: TButton; five: TButton; four: TButton; three: TButton; two: TButton; one: TButton; zero: TButton; point: TButton; lchange: TLabel; ltendered: TLabel; lsubtotal: TLabel; Bevel9: TBevel; done: TButton; new: TButton; wipe: TButton; change: TButton; Label4: TLabel; procedure doneClick(Sender: TObject); procedure changeClick(Sender: TObject); procedure newClick(Sender: TObject); procedure numpad (sender: TObject); procedure clobber; procedure display; procedure onemore (sender: TObject); procedure wipeClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Cashreg : TCashreg; implementation {$R *.DFM} const burgercost = 2.50; fliescost = 1.20; tunacost = 1.35; roachcost = 1.50; tripecost = 2.10; var {tally variables} numburg, numflies, numtuna, numroach, numtripe : byte; {subtotals} subburg, subflies, subtuna, subroach, subtripe, grandtotal : real; procedure TCashreg.doneClick(Sender: TObject); begin close end; procedure TCashreg.numpad(Sender: TObject); begin {vanilla keypad press handler for entering change} ltendered.caption := ltendered.caption + (sender as TButton).caption[2] end; procedure TCashreg.clobber; begin {initialise tallies} numburg := 0; numflies := 0; numtuna := 0; numroach := 0; numtripe := 0; {initialise subtotals} subburg := 0; subflies := 0; subtuna := 0; subroach := 0; subtripe := 0; {erase entered change} ltendered.caption := ''; lchange.caption := '' end; procedure TCashreg.display; begin {paint product tally numbers on form} lburgernum.caption := inttostr(numburg); lfliesnum.caption := inttostr(numflies); ltunanum.caption := inttostr(numtuna); lroachnum.caption := inttostr(numroach); ltripenum.caption := inttostr(numtripe); {paint product subtotals on form} lburgercost.caption := floattostrF(subburg, ffcurrency,7,2); lfliescost.caption := floattostrF(subflies, ffcurrency,7,2); ltunacost.caption := floattostrF(subtuna, ffcurrency,7,2); lroachcost.caption := floattostrF(subroach, ffcurrency,7,2); ltripecost.caption := floattostrF(subtripe, ffcurrency,7,2); {paint ordertotal on form} grandtotal := subburg+subflies+subtuna+subroach+subtripe; lsubtotal.caption := floattostrF((grandtotal),ffcurrency,7,2) end; procedure TCashreg.onemore (Sender: TObject); begin {add one of that particular product} case (sender as TButton).name[1] of 'a' : begin inc(numburg); subburg := subburg + burgercost end; 'b' : begin inc(numflies); subflies := subflies + fliescost end; 'c' : begin inc(numtripe); subtripe := subtripe + tripecost end; 'd' : begin inc(numtuna); subtuna := subtuna + tunacost end; 'e' : begin inc(numroach); subroach := subroach + roachcost end; 'f' : if numburg > 0 then begin dec(numburg); subburg := subburg - burgercost end; 'g' : if numflies > 0 then begin dec(numflies); subflies := subflies - fliescost end; 'h' : if numtripe > 0 then begin dec(numtripe); subtripe := subtripe - tripecost end; 'i' : if numtuna > 0 then begin dec(numtuna); subtuna := subtuna - tunacost end; 'j' : if numroach > 0 then begin dec(numroach); subroach := subroach - roachcost end end; {case} display end; procedure TCashreg.changeClick(Sender: TObject); begin {work out change} if (ltendered.caption <> '') then if (strtofloat(ltendered.caption) < grandtotal) then showmessage ('Please enter sufficient funds!') else lchange.caption := floattostrF(strtofloat(ltendered.caption)-grandtotal, ffcurrency,7,2) else showmessage ('Please enter some funds!') end; procedure TCashreg.newClick(Sender: TObject); begin {wipe whole order} clobber; display; end; procedure TCashreg.wipeClick(Sender: TObject); begin {erase entered change} ltendered.caption := ''; lchange.caption := '' end; end.