IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Не получается с меню
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


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

Я понимаю, что это должна быть функция или процедура. Но как, черт ее побери, это все сваять?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Нужно определится с типом списка пунктов.
Потом с перечнем кнопок (стрелки, 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;


Вроде всё просто.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Спасибо. Почти то, что надо. Остальное я уже сам подправлю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 19:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name