Shlizer Opublikowano 13 Listopada 2005 Zgłoś Opublikowano 13 Listopada 2005 Witam.. mam pewien problem z TB. Chcę zrobić menu z 3 możliwościami. W moim przypadku są to wizytówki. Gdy wcisnę F1 ukaże się wizytówka nr.1, F2 - wizytówka druga, F3 - trzecia, a gdy wcisnę Esc powinien wrócić do menu. Natomiast jeśli w menu wcisnę Esc to powinien kończyć program. program wizytowki;uses CRT;var zn:char;procedure ramka1(xg,yg,xd,yd: byte); var n: byte; begin for n:=xg to xd do begin gotoxy(n,yg); write(char(196)); gotoxy(n,yd); write(char(196)); end; for n:=yg to yd do begin gotoxy(xg,n); write(char(179)); gotoxy(xd,n); write(char(179)); end; gotoxy(xg,yg); write(char(218)); gotoxy(xd,yd); write(char(291)); gotoxy(xd,yg); write(char(217)); gotoxy(xg,yd); write(char(292)); end;procedure spis; begin clrscr; gotoxy(34,10); writeln('F1 - Menu1'); gotoxy(34,12); writeln('F2 - Menu2'); gotoxy(34,14); writeln('F3 - Menu3'); gotoxy(34,16); writeln('Esc - Koniec'); end;procedure menu1; begin clrscr; gotoxy(33,12); writeln('Piotr Pierwszy'); gotoxy(33,14); writeln('ul. Palacow 15'); gotoxy(33,16); writeln('40-375 Iksowo'); ramka1(20,10,60,18); zn:=readkey; if ord(zn)=27 then spis end;procedure menu2; begin clrscr; gotoxy(34,12); writeln('Alicja Druga'); gotoxy(33,14); writeln('ul. Kolo 12a/7'); gotoxy(33,16); writeln('12-834 Pieszkow'); ramka1(20,10,60,18); zn:=readkey; if ord(zn)=27 then spis end;procedure menu3; begin clrscr; gotoxy(34,12); writeln('Robert Trzeci'); gotoxy(33,14); writeln('ul. Kartofla 12'); gotoxy(34,16); writeln('20-469 Konin'); ramka1(20,10,60,18); zn:=readkey; if ord(zn)=27 then spis end;begin spis; repeat if ord(zn)=0 then begin zn:=readkey; case ord(zn) of 59:menu1; 60:menu2; 61:menu3; end; end; until ord(zn)=27;end. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 13 Listopada 2005 Zgłoś Opublikowano 13 Listopada 2005 program wizytowki;uses CRT;var zn:char; sub: Boolean;procedure ramka1(xg,yg,xd,yd: byte);var n: byte; begin for n:=xg to xd do begin gotoxy(n,yg); write(char(196)); gotoxy(n,yd); write(char(196)); end; for n:=yg to yd do begin gotoxy(xg,n); write(char(179)); gotoxy(xd,n); write(char(179)); end; gotoxy(xg,yg); write(char(218)); gotoxy(xd,yd); write(char(291)); gotoxy(xd,yg); write(char(217)); gotoxy(xg,yd); write(char(292)); end;procedure spis;beginclrscr;sub:=False;gotoxy(34,10); writeln('F1 - Menu1');gotoxy(34,12); writeln('F2 - Menu2');gotoxy(34,14); writeln('F3 - Menu3');gotoxy(34,16); writeln('Esc - Koniec');zn:='0';end;procedure menu1;beginclrscr;sub:=True;gotoxy(33,12); writeln('Piotr Pierwszy');gotoxy(33,14); writeln('ul. Palacow 15');gotoxy(33,16); writeln('40-375 Iksowo');ramka1(20,10,60,18);repeatzn:=readkey;until (ord(zn)=27);spis;end;procedure menu2;beginclrscr;sub:=True;gotoxy(34,12); writeln('Alicja Druga');gotoxy(33,14); writeln('ul. Kolo 12a/7');gotoxy(33,16); writeln('12-834 Pieszkow');ramka1(20,10,60,18);repeatzn:=readkey;until (ord(zn)=27);spis;end;procedure menu3;beginclrscr;sub:=True;gotoxy(34,12); writeln('Robert Trzeci');gotoxy(33,14); writeln('ul. Kartofla 12');gotoxy(34,16); writeln('20-469 Konin');ramka1(20,10,60,18);repeatzn:=readkey;until (ord(zn)=27);spis;end;beginspis;repeat zn:=readkey; case ord(zn) of 59:menu1; 60:menu2; 61:menu3; end;until ((ord(zn)=27) and (not sub));end. Poprawki są 3: 1. Sprawdzam, czy jestem w podmenu (sub - wartość logiczna). 2. Usunąłem warunek if ord(zn)=0 bo program się zapętlał bez wchodzenia do "case". 3. Jedyny dozwolony klawisz przy wizytówce to ESC - nie można przełączać pomiędzy wizytówkami bez wychodzenia do menu. Jeśli chcesz to zmienić, to usuń pętle w procedurach. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...