program menuzes; {$F+} uses crt; const MaxMenuPontDb=3; type TMenuPont=record kerdes:string[20]; vegrehajt:procedure; sorszam:byte; end; TMenu=record MenuDb:byte; MenuPontok:array[1..MaxMenuPontDb] of TMenuPont; {ablak:Tablak; helyablak:Tablak;} end; procedure elj1;forward; const MP1:TMenuPont=(kerdes:'menup.1';vegrehajt:elj1;help:'help1.txt';sorszam:1); MP2:TMenuPont=(kerdes:'menup.2';vegrehajt:elj2;help:'help2.txt';sorszam:1);T MP3:TMenuPont=(kerdes:'exit';vegrehajt:exites;help:'helpe.txt';sorszam:1); M:TMenu=(menudb:3;menupontok:(MP1,MP2,MP3)); procedure menukiiras(m:Tmenu); var i:integer; begin for i:=1 to m.menudb do menusorki(m.menupontok[i].kerdes,i); end; 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; function Menukivalaszt(m:TMenu):byte; var kilep:boolean; i:integer; c:char; begin i:=1; aktivsorki(m.menupontok[i].kerdes,i); kilepes:=false; repeat c:=readkey; case c of #27: begin kilep:=true; melyik:=menudb; end; #13: begin kilep:=true; melyik:=i; end; #0: begin c:=readkey; case c of #80: begin menusorki( ,i); i:=i-1; if i:=0 then i:=menudb; aktivsorki( ,i); end; #72: begin menusorki( ,i); i:=i+1; if i>m.menudb then i:=1; aktivsorki( ,i); end;