SERGE_BLIZNUK
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: { Пример создания и использования меню } program menu2; uses Crt; const NORM=$17; { цвет невыделеного пункта } SEL=$70; { цвет выделенного пункта } N=3; var menu:array[1..N] of string[12];{ названия пунктов меню } punkt:integer; { номер выделенного пункта } ch:char; { введенный символ } x,y:integer; { координаты первой строки меню } Procedure punkt1; begin ClrScr; writeln('Процедура 1.Нажмите <Enter> для продолжения.'); readln; end; Procedure punkt2; begin ClrScr; writeln('Процедура 2.Нажмите <Enter> для продолжения.'); readln; end; Procedure MenuToScr;{ вывод меню на экран } var i:integer; begin ClrScr; for i:=1 to N do begin GoToXY(x,y+i-1); write(menu[i]); end; TextAttr:=SEL; GoToXY(x,y+punkt-1); write(menu[punkt]);{ выделим строку меню } TextAttr:=NORM; end; { основная программа } begin menu[1]:=' Действие 1 '; menu[2]:=' Действие 2 '; menu[3]:=' Выход '; punkt:=1; x:=5; y:=5; TextAttr:=NORM; MenuToScr; repeat ch:=ReadKey; if ch=char(0) then begin ch:=ReadKey; case ch of chr(80):{ стрелка вниз } if punkt<N then begin GoToXY(x,y+punkt-1); write(menu[punkt]); punkt:=punkt+1; TextAttr:=SEl; GoToXY(x,y+punkt-1); write(menu[punkt]); TextAttr:=NORM; end; chr(72):{ стрелка вверх } if punkt>1 then begin GoToXY(x,y+punkt-1); write(menu[punkt]); punkt:=punkt-1; TextAttr:=SEl; GoToXY(x,y+punkt-1); write(menu[punkt]); TextAttr:=NORM; end; end; end else if ch=chr(13) then begin { нажата клавиша <Enter> } case punkt of 1:punkt1; 2:punkt2; 3:ch:=chr(27);{ выход } end; MenuToScr; end; until ch=chr(27);{ 27 - код <Esc> } end. | |