Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 21:24   #1
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию Меню в ABC Pascal

Этот код без сбоев работает в обыкновенном ВР. Хотелось переделать его под АВС, но появилась проблема. После вызова какой либо процедуры, после ее выполнения возврат в меню не осуществляется. А точнее он осуществляется только не отображается. То есть если я вызову, допустим процедуру1, нажму ентер, то в окне так и останется надпись "процедура1". при нажатии срелки вниз и снова ентер, надпись поменяется на "процедура2". Получается что меню работает, и выход из процедуры осуществляется, но этого никак не видно((

Код:
uses crt;

const sel=$1e;
      norm=$1f;
      n=3;
      lu=#218;
      ru=#191;
      ld=#192;
      rd=#217;
      h=#196;
      v=#179;
      x1=8;
      x2=75;
      y1=2;
      y2=24;
      
var p,x,y:integer;
    ch:char;
    menu:array[1..n] of string[50];
    
procedure p1;
begin
clrscr;
writeln('procedure 1');
readln;
exit;
end;

procedure p2;
begin
clrscr;
writeln('procedure 2');
readln;
end;

procedure showmenu(x,y,p:integer); // вывод меню на экран

var i,k:integer;
menu:array[1..3]of string[50];
begin
highvideo;
        menu[1]:='1';
        menu[2]:='2';
        menu[3]:='3';
          clrscr;
     window(x1,y1,x2,y2);
     clrscr;
     write(lu);
     for k:=x1+1 to x2-1 do write(h);
     write(ru);
     for k:=y1+1 to y2-1 do
         begin
              gotoxy(1,k-y1+1);
              write(v);
              gotoxy(x2-x1+1,wherey);
              write(v);
         end;
         write(ld);
         window (x1,y1,x2,y2+1);
         gotoxy(2,y2-y1+1);
         for k:=x1+1 to x2-1 do write(h);
         write(rd);
         window(x1+1,y1+1,x2-1,y2-1);
         
CLRSCR;
       gotoxy(18,6);
       writeln(' Главное меню');
     gotoxy(18,8);
     textattr:=norm;
     writeln('=====================================');
     for i:=1  to  n do
     begin
         gotoxy(x,y+i-1);
         write(menu[i]);
     end;
     gotoxy(18,y+6);
     writeln('=====================================');
     textattr:=sel;
     gotoxy(x,y+p-1);
     write(menu[p]);
     textattr:=norm;
end;
Begin
        menu[1]:='1';
        menu[2]:='2';
        menu[3]:='3';
       
        p:=1;
     x:=21;
     y:=9;
     textattr:=norm;
     showmenu(x,y,p);
     repeat
      ch:=readkey;
      if ch=chr(0) then begin
         ch:=readkey;
         case ch of
              chr(80):
                      if p<n then begin
                         gotoxy(x,y+p-1);
                         write(menu[p]);
                         p:=p+1;
                         textattr:=sel;
                         gotoxy(x,y+p-1);
                         write(menu[p]);
                         textattr:=norm;
                         end;
              chr(72): if p>1 then begin
                         gotoxy(x,y+p-1);
                         write(menu[p]);
                         p:=p-1;
                         textattr:=sel;
                         gotoxy(x,y+p-1);
                         write(menu[p]);
                         textattr:=norm;
                         end;
              end;
        end
         else if ch=chr(13) then begin
              case  p of
                      1: begin clrscr; p1;end;
                      2: begin clrscr;p2;end;
                      
                      3: ch:=chr(27)
              end;
              clrscr;
              showmenu(x,y,p);
         end;
      until ch=chr(27);

End.
Desha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC проблемы с кодировкой Foxx Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2012 12:28
Создание модулей в Pascal ABC Desha Паскаль, Turbo Pascal, PascalABC.NET 5 25.10.2009 17:01
Pascal ABC .NET no4_sniper Паскаль, Turbo Pascal, PascalABC.NET 0 17.10.2009 00:21
2 задачи Pascal Abc Максим1987 Фриланс 3 15.06.2009 13:24
Pascal ABC, массивы Russia Помощь студентам 8 23.05.2009 12:23