program menuzo_program; {P.M. - 26. gyakorlat 1999.dec.9., HBV} {$F+} uses crt; const maxmenupontdb=4; var sorszam:integer; type tmenupont=record kerdes:string[40]; vegrehajt:procedure; help:string[40]; {A help-file neve} sorszam:byte; {A gyorsbillentyu /hot-key/ neve} end; tmenu=record menudb:byte; menupontok:array[1..maxmenupontdb] of tmenupont; {menuablak:tablak; helpablak:tablak;} end; procedure elj1;forward; procedure elj2;forward; procedure elj3;forward; const mp1:Tmenupont=(kerdes:'szoveg1';vegrehajt:elj1;sorszam:=1); mp2:Tmenupont=(kerdes:'szoveg2';vegrehajt:elj2;sorsszam:=2) mp3:Tmenupont=(kerdes:'szoveg3';vegrehajt:elj3;sorsszam:=3) 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 menudb do MenuSorKi(m.menupontok[i].kerdes,i); 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; function menukivalaszt(m:tmenu):byte; var c:char; i:integer; begin kilep:=false; i:=1; aktivsorki(szoveg:string[40];i:integer); repeat c:=readkey; case c of #27:begin {ESC-re} kilep:=true; melyik:=m.menudb; end; #13:begin {SPACE-re} melyik:=i; kilep:=true; end; #0:begin {felfelenyil kell} c:readkey; case c of {felfele-nyil} #80:begin menusorki(m.menupont[i].kerdes,i); dec(i); if i=0 then i:=menudb; aktivsorki(szoveg:string[40];i:integer); end; {lefele-nyil} #72:begin menusorki(m.menupont[i].kerdes,i); dec(i); if i=0 then i:=menudb; aktivsorki(szoveg:string[40];i:integer); end; end; menukivalaszt:=melyik; end; begin end.