Программа
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.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию