Простое меню: Сложение Вычитание Деление Умножение - Free Pascal
Формулировка задачи:
Как сделать, чтобы был дан список меню, и при нажатии клавиш ↑ и ↓ менялся цвет определенной строки? Например, чтобы при нажатии ↓ и ↓ выделилось Деление
Сложение
Вычитание
Деление
Умножение
Решение задачи: «Простое меню: Сложение Вычитание Деление Умножение»
textual
Листинг программы
uses
crt;
const
n=4;
menu: array[1..n] of string=(
'Сложение',
'Вычитание',
'Деление',
'Умножение'
);
function show_menu: integer;
var
i,s: integer;
k: char;
begin
s:=1;
repeat
clrscr;
textcolor(white);
writeln('Меню:');
for i:=1 to n do begin
if s=i then textcolor(lightred)
else textcolor(lightgray);
writeln(menu[i]);
end;
k:=readkey;
if k=#0 then begin
k:=readkey;
if (k=#72) and (s>1) then dec(s);
if (k=#80) and (s<n) then inc(s);
end;
until k=#13;
textcolor(lightgray);
clrscr;
show_menu:=s;
end;
var
s: integer;
begin
s:=show_menu;
writeln('Выбрано: ', menu[s]);
readln;
end.
Объяснение кода листинга программы
- Объявлена константа
nсо значением 4, которая определяет количество элементов в меню. - Объявлен массив
menuтипаstringразмером 1..n, содержащий названия операций: 'Сложение', 'Вычитание', 'Деление', 'Умножение'. - Объявлена функция
show_menu, которая выводит меню на экран и ожидает выбора операции пользователем. - В функции
show_menuпеременнойsприсваивается значение 1, которое определяет начальный выбранный пункт меню. - В цикле
repeatпроисходит вывод меню на экран. - В каждой итерации цикла проверяется, является ли текущий пункт меню выбранным. Если да, то цвет текста меняется на светло-красный, иначе на светло-серый.
- После цикла выполняется чтение ключа клавиатуры.
- Если нажата клавиша Enter (#13), то цикл завершается.
- Если нажата клавиша стрелки вверх (#72) и выбранный пункт меню больше 1, то значение переменной
sуменьшается на 1. - Если нажата клавиша стрелки вниз (#80) и выбранный пункт меню меньше 4, то значение переменной
sувеличивается на 1. - После выхода из цикла выполняется чтение ключа клавиатуры.
- Если нажата клавиша Enter (#13), то значение переменной
sприсваивается функцииshow_menu. - В основной части программы вызывается функция
show_menu. - Выведен результат выполнения функции
show_menu- выбранная операция. - Программа ожидает нажатия клавиши Enter (#13) для завершения работы.