Dawide Heavens Posted Május 14, 2011 Share Posted Május 14, 2011 . Idézés Link to comment Share on other sites More sharing options...
somewho Posted Május 15, 2011 Share Posted Május 15, 2011 Ezt úgy tudod megcsinálni, hogy a menü első elemének hátterét kiemelném TextBackground-dal, alá pedig kiírnám az összes többi menüpontot. Létrehoznék egy integer változót, amiben eltárolom, hogy hol áll a kurzor jelenleg. Ennek a menü kiírása után rögtön 1 értéket adnék. Ezután egy repeat-until ciklussal ellenőrizném a billentyűlenyomásokat. Bevezetnék egy char típusú változót, amibe mindig beolvasom a lenyomott karaktert. Ha a lenyomott karakter kódja 72, akkor csökkentem az integer változót, és újraírom a menüt, de ezúttal az integer változóban megadott menüpontot jelölöm ki. Ha a 80-as kódú billentyű (le nyíl) lett megnyomva, akkor növelem az integer változó értékét, és ennek megfelelően újraírom a menüt. A ciklus until záradékában ellenőrzöd a 13-as kódú billentyűt is (Enter). Az integer változó értéke alapján pedig elugorsz a kért menüpontba. A menü kiírását tedd egy eljárásba (procedure). Paramétere legyen az integer változó értéke. Így elég lesz ezt meghívnod, és sok írástól megkíméled magad. Az alábbi program bemutatja hogyan készíthetünk egy egyszerű menüt az eddig tanultak alapján, melyben a felfelé ill. lefelé nyilak segítségével mozoghatunk, Enter-rel aktiválhatjuk a kiválasztott menüpontot és Esc-el léphetünk ki a programból: program Pelda19; uses crt; var k:integer; { ebben fogjuk tarolni, hogy eppen melyik menuponton vagyunk } c:char; begin clrscr; k:=1; { kiirja a menut } textbackground(red); textcolor(white); gotoxy(10,10); write(' Elso '); textbackground(blue); textcolor(yellow); gotoxy(10,11); write(' Masodik '); gotoxy(10,12); write(' Harmadik '); { a kurzort beallitjuk a jobb also sarokba } gotoxy(80,25); { beolvas egy billentyut es a menut ettol fuggoen atrajzolja } repeat c:=readkey; { ha valamelyik nyil lett megnyomva } if c=#0 then begin { atfestjuk a kivalasztottat kekre } textbackground(blue); textcolor(yellow); gotoxy(10,9+k); case k of 1: write(' Elso '); 2: write(' Masodik '); 3: write(' Harmadik '); end; { megnezzuk melyik billentyut nyomta meg a felhasznalo es ettol fuggoen megvaltoztatjuk a k erteket } c:=readkey; case c of #72: if k>1 then dec(k); { #72 = felfele nyil } #80: if k<3 then inc(k); { #80 = lefele nyil } end; { atfestjuk az uj kivalasztottat pirosra } textbackground(red); textcolor(white); gotoxy(10,9+k); case k of 1: write(' Elso '); 2: write(' Masodik '); 3: write(' Harmadik '); end; { a kurzort beallitjuk a jobb also sarokba } gotoxy(80,25); end; { ha #13 = Enter lett megnyomva } if c=#13 then begin gotoxy(10,15); textbackground(0); textcolor(7); writeln('Kivalaszottad a(z) ',k,'. menupontot!'); gotoxy(80,25); end; until c=#27; end. http://www.prog.ide.sk/pas2.php?s=34 Idézés Link to comment Share on other sites More sharing options...
Dawide Heavens Posted Május 15, 2011 Author Share Posted Május 15, 2011 . Idézés Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.