Jump to content
PirateClub.hu

Pascal lépegetős menü


Dawide Heavens
 Share

Recommended Posts

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

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Hozzászólás a témához...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Jelenleg olvassa   0 members

    • No registered users viewing this page.
×
×
  • Create New...