Помощь - Поиск - Пользователи - Календарь
Полная версия: Не получается с меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
camac
Бодрого дня, господа.
Ни как не могу разобраться с проблемкой. Мне в программулине необходимо 4 разных меню:
- в первых 2-х 2 пункта;
- в 3-м 8;
- и в 4-м 6.
Разумеется пункты этих меню разные.
Первоначально вызывается первое. После выбора нужного пункта что-то там делается.
Затем вызывается второе... И т. д.

Я понимаю, что это должна быть функция или процедура. Но как, черт ее побери, это все сваять?
Федосеев Павел
Нужно определится с типом списка пунктов.
Потом с перечнем кнопок (стрелки, enter, esc).

Пусть типом списка пунктов будет массив строк.

const
MenuItems1 : array [0..3] of string = (
'Menu 1 Item 0',
'Menu 1 Item 1',
'Menu 1 Item 2',
'Menu 1 Item 3'
);
MenuItems2 : array [1..1] of string = (
'Menu 2 Item 0',
'Menu 2 Item 1'
);
................

Потом написать функцию, которая возвращает номер выбранного пункта меню. Возьму за образец ту, что дал volvo.
function Menu(const items : array of string) : integer;
begin
result := 0; - это номер выбранного пункта меню
в цикле выполнять
вывод построчно всех строк из списка пунктов с одним цветом для неактивных и другим - для выбранного
опрос клавиш
стрелка вверх: result:=result-1 активным становится предыдущий пункт
стрелка вниз: result:=result+1 активным становится следующий пункт
enter: прервать цикл
перейти в начало цикла
inc(result);
Menu:=result - в современных компиляторах можно без этой строки.
end;

Потом в программе обращаться

repeat
case Menu(MenuItems1) of
1: case Menu(MenuItems2) of
1: .........
2: .........
3: .........
end;
2: case Menu(MenuItems3) of
1: .........
2: .........
end;
3: case Menu(MenuItems4) of
1: .........
2: .........
3: .........
4: .........
end;
4: break;
end;
until false;


Вроде всё просто.
camac
Спасибо. Почти то, что надо. Остальное я уже сам подправлю.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.