program menuzo_program; {P.M. - 26. gyakorlat 1999.dec.9., HBV} {$F+} uses crt,graph; const maxmenupontdb=3; maxsorhossz=80; maxsordb=25; var sorszam:integer; type tkep=array[1..maxsorhossz,1..maxsordb] of record mi:byte; milyen:byte; end; tmenupont=record kerdes:string[40]; vegrehajt:procedure; help:string[40]; {A help-file neve} sorszam:byte; {A gyorsbillentyu /hot-key/ neve} end; tablak=record balf,jobba:PointType; hatterszin,betuszin:byte; end; tmenu=record menudb:byte; menupontok:array[1..maxmenupontdb] of tmenupont; menuablak:tablak; {helpablak:tablak;} end; var kep:tkep absolute $b800:$0000; {memoriacime a kepnek} kepek:array[1..3] of tkep; {3-szor tudja elmenteni a kepet} mutato:byte; procedure kepment; begin mutato:=mutato+1; {mutato:=0 valahol az elejen} kepek[mutato]:=kep; end; procedure kepvissza; begin kep:=kepek[mutato]; mutato:=mutato-1; end; procedure elj1;forward; procedure elj2; forward; procedure elj3; forward; procedure elj11;forward; procedure elj12; forward; procedure elj13; forward; const mp1:Tmenupont=(kerdes:'szoveg1';vegrehajt:elj1;help:'help.txt'; sorszam:1 ); mp2:Tmenupont=(kerdes:'szoveg2';vegrehajt:elj2;help:'help.txt'; sorszam:2); mp3:Tmenupont=(kerdes:'szoveg3';vegrehajt:elj3;help:'help.txt';sorszam:3); m:Tmenu=(menudb:3; menupontok: ( (kerdes:'szoveg1';vegrehajt:elj1;help:'help.txt'; sorszam:1), (kerdes:'szoveg2';vegrehajt:elj2;help:'help.txt'; sorszam:2), (kerdes:'szoveg3';vegrehajt:elj3;help:'help.txt'; sorszam:3) ); menuablak:(balf:(x:10;y:1); jobba:(x:30;y:10); hatterszin:BLUE; betuszin:White)); almenu:Tmenu=(menudb:3; menupontok: ( (kerdes:'szoveg11';vegrehajt:elj11;help:'help.txt'; sorszam:11), (kerdes:'szoveg12';vegrehajt:elj12;help:'help.txt'; sorszam:12), (kerdes:'szoveg13';vegrehajt:elj13;help:'help.txt'; sorszam:13) ); menuablak:(balf:(x:30;y:1); jobba:(x:50;y:10); hatterszin:BLUE; betuszin:White)); procedure ablaknyit (a:tablak); begin with a do window(balf.x,balf.y,jobba.x,jobba.y); end; procedure menuzes(m:tmenu); forward; procedure elj1; begin clrscr; menuzes(almenu); {gotoxy(24,1); write('els elj r s megh0v sa');} readln; clrscr; end; procedure elj2; begin clrscr; gotoxy(24,1); write('masodik eljaras meghivasa'); readln; clrscr; end; procedure elj3; begin clrscr; gotoxy(24,1); write('harmadik eljaras meghivasa'); readln; clrscr; end; procedure elj11; begin clrscr; gotoxy(24,1); write('elso almenu, elso eljaras meghivasa'); readln; clrscr; end; procedure elj12; begin clrscr; gotoxy(24,1); write('elso almenu, masodik eljaras meghivasa'); readln; clrscr; end; procedure elj13; begin clrscr; gotoxy(24,1); write('elso almenu, harmadik eljaras meghivasa'); readln; clrscr; end; procedure menusorki(s:string; i:integer); var j:integer; begin j:=1; gotoxy(1,i); with (m.menupontok[i]) do begin while (jm.menudb then i:=1; aktivsorki(m.menupontok[i].kerdes,i); end; end; {case} end ; end{case} until kilep or (c in fgombok); i:=1; while (i<=m.menudb) and (c<>m.menupontok[i].kerdes[m.menupontok[i].sorszam ]) do inc(i); if (c in fgombok) then melyik:=i; menukivalaszt:=melyik; end; begin clrscr; menuzes(m); readln; end.