
Программа примера №18 продемонстрирует нам реализацию меню средствами моделя Crt.
Реализация меню подразумевает следующие этапы:
— отображение меню на экране;
— установка одного из пунктов в активное состояние;
— ожидание нажатия клавиш;
— анализ нажатой клавиши (если стрелки – изменение активного пункта, если Enter – выполнение активного пункта).
Пример 18
{ Программа реализует работу меню }
uses Crt;
const { описание названий пунктов меню }
Items : array [0..2] of string =
(' Пункт 1 ',' Пункт 2 ',' Пункт 3 ');
var
xpos,ypos,curPos,i: integer;
Key: char;
NormCol,SelCol,StatCol:byte;
BEGIN
ClrScr; { установка начальных значений }
NormCol:=$71; { значения переменных указаны в }
SelCol:=$8F; { шестнадцатеричной системе счисления}
StatCol:=$0F;
xpos:=10;
ypos:=10;
TextAttr:=NormCol;
for i:=0 to 2 do { вывод списка меню }
begin
GotoXY(xpos,ypos+i);
write(Items[i]);
end;
TextAttr:=SelCol; { выделение 1-го пункта меню }
GotoXY(xpos,ypos);
write(Items[1]);
repeat { реакция на нажатие клавиш }
Key:=readkey;
if Key=chr(0) then
key:=readkey;
TextAttr:=StatCol;
GotoXY(2,24);
ClrEol;
TextAttr:=NormCol;
GotoXY(xpos,ypos+CurPos);
write(Items[CurPos]);
case ord(key) of
72:if CurPos>0 then { изменение номера текущего }
dec(curPos); { пункта меню }
80:if CurPos<2 then
inc(curPos);
13:begin { выбор пункта меню }
TextAttr:=StatCol;
GotoXY(2,24);
Sound(300);
Delay(100);
NoSound;
write('Выбран ',Items[CurPos]);
end
end;
TextAttr:=SelCol;
GotoXY(xpos,ypos+CurPos);
write(Items[CurPos]);
until key=#27;
TextAttr:=$0F; { установка первоначальных параметров }
ClrScr;
END.

Комментарии
Комментариев пока нет - будьте первым.