Program menuzes; {$f+} Uses crt; Const MaxMenuPontdb=3; Type TMenuPont=record kerdes:string[20]; vegrehajt:procedure; help: string; {A help file neve} sorszam : byte; {Hot-key} end; TMenu=record menudb:byte; menupontok: array [1..MaxMenuPontdb] of TMenuPont; {menuablak: Tablak; helpablak: Tablak;} end; Procedure elj1;forward; Procedure elj2;forward; Procedure exitus;forward; {Tipusos konstans} Const MP1:Tmenupont=(kerdes:'MenuPont_1';vegrehajt:elj1;help:'help1.txt';sorszam:1); {elj1-et meg elobb kell megadni--> ez ele: Procedure elj1;forward)} MP2:Tmenupont=(kerdes:'MenuPont_2';vegrehajt:elj2;help:'help2.txt';sorszam:1); MPR:Tmenupont=(kerdes:'Exit';vegrehajt:exitus; help:'Helpe.txt'; sorszam:1); {sorszam 1, mert nincs Hot-key} M:Tmenu=(Menudb:3; MenuPontok:(MP1,MP2,MP3)); {Vesszo kell, mert vektorokrol van szo} Procedure MenuSorki (s:string; i:integer); begin gotoxy(i,1): write(s); end; Procedure AktivSorki (s:string; i:integer); begin HighVideo; Gotoxy(i,1); write(s); Lowvideo; end; Procedure MenuKiiras (m:TMenu); var i:integer; begin for i:=1 to m.menudb do MenuSorki(m.menupontok[i].kerdes,i); end; Funtcion MenuKivalaszt (m:Tmenu):byte; Var c:char; kilep:boolean; i:integer; Begin kilep:=false; i:=1; AktivSorki(m.MenuPontok[i].kerdes; i:integer); Repeat c:=readkey; Case c of #27:begin kilep:=true; melyik:=Menudb; end; #{enter}: begin melyik:=1; kilep:=true; end; #{felnyil}: begin Menusorki(m.MenuPontok.kerdes,i); I:=i-1; If i=0 then i:=m.Menudb; AblakSorki(m.MenuPontok.kerdes,i); end; #{lenyil}: begin Menusorki(m.MenuPontok.kerdes,i); i:=i+1; If i>m.menudb then i:=1; AblakSorki(m.MenuPontok.kerdes,i); end; end; Until not kilep; End; Procedure menuzes (m:Tmenu); var kilep:boolean; Begin kilep:=false; Repeat {Kepmentes;} MenuKiiras(m); melyik:=MenuKivalaszt(m); m.menupontok[melyik].vegrehajt; {Kepvissza;} Until not kilep; End;