Программа


USES Crt;                      { Подключение модуля Crt }
VAR Exit:boolean;              { Флаг "Выход" }
    TextAttrBuf:Byte;          { Переменная для сохранения атрибутов текста }
FUNCTION Menu:byte;            { Функция вывода меню и получения ответа }
  Const QuantityMenuPoint=4;   { Количество пунктов меню }
        ExitPoint=QuantityMenuPoint; { Пункт меню "Выход" }
        Point:byte=ExitPoint;        { Текущий пункт меню }
        MaxLengthMenuPoint=17; { Максимальная длина пункта меню }
        { Положение верхнего левого угла меню: }
        XStart=(80-MaxLengthMenuPoint) div 2 -2;
        YStart=(24-QuantityMenuPoint) div 2 -1;
        MenuList:array[1..QuantityMenuPoint] of string[MaxLengthMenuPoint] =
                { Список пунктов меню }
                ('Первый пункт меню',
                 'Второй пункт меню',
                 'Третий пункт меню',
                 'ВЫХОД            ');
  Var ExitMenu:boolean;              { Флаг "Выход" }
      MenuMeter:integer;             { Счетчик }
  Procedure PointON(Point:byte);     { Процедура подсветки пункта меню }
    begin
      TextAttr:=White;                 { Установка белого цвета }
      GoToXY(XStart+1,YStart+Point);   { Позиционирование курсора }
      Write(#16,MenuList[Point],#17);  { Вывод пункта меню с указателями }
      TextAttr:=LightGray              { Установка серого цвета }
    end;
  Procedure PointOFF(Point:byte);     { Процедура гашения пункта меню }
    begin
      TextAttr:=LightGray;             { Установка серого цвета }
      GoToXY(XStart+1,YStart+Point);   { Позиционирование курсора }
      Write(' ',MenuList[Point],' ')   { Вывод пункта меню }
    end;
  Begin
    ClrScr;             { Очистка экрана }
    begin { Вывод статус строки: }
      GoToXY(8,25);       { Позиционирование курсора }
      TextAttr:=White;
      Write(#24,#25);
      TextAttr:=LightGray;
      Write(' Выбор пункта меню');
      TextAttr:=White;
      GoToXY(38,25);       { Позиционирование курсора }
      Write(#17,#196,#217);
      TextAttr:=LightGray;
      Write(' Активизация выбранного пункта');
      ExitMenu:=FALSE    { Сброс флага "Выход" }
    end;
    begin { Прорисовка меню: }
      GoToXY(XStart,YStart);       { Позиционирование курсора }
      Write('╔');
      for MenuMeter:=1 to MaxLengthMenuPoint+2 do Write('═');
      Write('╗');
      for MenuMeter:=1 to QuantityMenuPoint do
        begin
          GoToXY(XStart,YStart+MenuMeter);
          Write('║ ',MenuList[MenuMeter],' ║')
        end;
      GoToXY(XStart,YStart+QuantityMenuPoint+1);
      Write('╚');
      for MenuMeter:=1 to MaxLengthMenuPoint+2 do Write('═');
      Write('╝');
    end;
    PointON(Point);   { Подсветить пункт меню }
    repeat
      case ReadKey of
        #72:begin
              PointOFF(Point);   { Погасить пункт меню }
              { Переопределение пункта меню: }
              begin
                Point:=Point-1;
                if Point<1 then Point:=QuantityMenuPoint
              end;
              PointON(Point);   { Подсветить пункт меню }
            end;
        #80:begin
              PointOFF(Point);   { Погасить пункт меню }
              { Переопределение пункта меню: }
              begin
                Point:=Point+1;
                if Point>QuantityMenuPoint then Point:=1
              end;
              PointON(Point);   { Подсветить пункт меню }
            end;
        #13:ExitMenu:=TRUE;  { Подъем флага "Выход" }
        #27:begin
              ExitMenu:=TRUE;  { Подъем флага "Выход" }
              Point:=ExitPoint
            end
      end
    until ExitMenu;
    if Point=ExitPoint then Menu:=255
                       else Menu:=Point
  End;
BEGIN
  TextAttrBuf:=TextAttr;  { Сохранение начальных атрибутов текста }
  Exit:=FALSE;    { Сброс флага "Выход" }
  repeat   { Цикл работы программы }
    case Menu of       { Выбор действия по ответу на меню }
        1:;
        2:;
        3:;
      255:Exit:=TRUE  { Подъем флага "Выход" }
    end
  until Exit;
  TextAttr:=TextAttrBuf;  { Востановление начальных атрибутов текста }
  ClrScr                  { Очистка экрана }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию