Создать вертикальное меню — Pascal(Паскаль)

uses crt;
const kol=3;{количество пунктов меню}
      {массив названий пунктов меню}
      vybor:array[1..kol] of string=('1-текст','2-цвет ','3-выход');
 
procedure Menu(var k:byte);{создание и вывод на экран меню}
var kod: char;
    i:byte;
begin
window(1,1,80,25);
textbackground(0);
clrscr;
k:=1;
gotoxy(4,1);
write('Меню');
k:=1; {выведен первый пункт меню}
repeat
for i:=1 to kol do
 begin
  if i=k then {выделенный пункт}
   begin
    textbackground(3);
    textcolor(9);
   end
  else  {остальные}
   begin
    textbackground(0);
    textcolor(15)
   end;
gotoxy(1,i+1);{ставим курсор}
write(vybor[i]);{выводим пункты}
end;
repeat
kod:=readkey;
until Kod in [#13, #72, #80];
case Kod of
#72: begin{стрелка вверх}
     k:=k-1;
     if k=0 then k:=3;{если выше верха, вниз}
     end;
#80: begin {стрелка вниз}
     k:=k+1;
     if k=4 then k:=1;{если ниже низа, вверх}
     end;
end;
until kod=#13;{нажат Enter, выходим из меню в выбранную процедуру}
end;
 
procedure Text;{первое задание}
var c:char;
    x,y,w,h,i,j,x1,y1,k:byte;
begin
writeln('Введите координаты окна и размеры окна:');
repeat
write(' По горизонтали левый край от 1 до 78 x=');
readln(x);
until x in [1..78];
repeat
write(' Ширина от 1 до ',79-x,' w=');
readln(w);
until w in [1..79-x];
repeat
write(' По вертикали верхний край от 2 до 23 y=');
readln(y);
until y in [2..23];
repeat
write(' Высота от 1 до ',24-y,' h=');
readln(h);
until h in [1..24-y];
writeln('Нажмите Enter для продолжения');
textbackground(0);
clrscr;
writeln('Введите текст.  Окончание Enter...');
window(x,y,x+w,y+h);
textbackground(15);
textcolor(12);
clrscr;
if keypressed then
 begin
  c:=readkey;{читаем символы}
  write(c);{выводим в окне}
 end;
readln;
end;
 
procedure Cvet;{второе задание}
var k,i,w,h,x,x1,y:byte;
    c:char;
begin
textbackground(0);
window(1,1,80,25);
writeln('Введите координаты окна:');
repeat
write(' По горизонтали от 1 до 78 x=');
readln(x);
until x in [1..78];
repeat
write(' Ширина окна от 1 до ',79-x,' w=');
readln(w);
until w in [1..79-x];
repeat
write(' По вертикали от 2 до 23 y=');
readln(y);
until y in [2..23];
repeat
write(' Высота окна от 1 до ',24-y,' h=');
readln(h);
until h in [1..24-y];
writeln('Нажмите Enter для продолжения');
textbackground(0);
clrscr;
writeln('Нажатием клавиши Enter меняйте цвет столбиков.  Окончание Esc...');
k:=8;
repeat
for i:=1 to w+1 do
 begin
  x1:=x+i-1;
  window(x1,y,x1,y+h);{создаем окна шириной в один столбик}
  textbackground(i-k);{разного цвета}
  clrscr;
 end;
if keypressed then{ожидаем нажатия клавиши}
 begin
  c:=readkey;
  if c=#13 then k:=k-1;{если Утеук, меняем цвета}
 end;
until c=#27;{если Esc, заканчиваем}
end;
{основная программа}
var i,k:byte;
    c:char;
begin
 repeat
   textbackground(0);
   textcolor(15);
   Menu(k);{выводим меню}
   clrscr;
   case k of{выбираем стрелками действие}
   1: Text;
   2: Cvet;
   3: begin
      window(1,1,80,25);
      textbackground(0);
      clrscr;
      textcolor(15);
      writeln('Работа программы завершена! Нажмите Enter для выхода...');
      readln;
      end;
   end;
 until k=3;
end.

Leave a Comment

63 + = 72