Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Меню

Автор: Client 18.06.2008 18:18

Привет!
Вот делаю меню, но чуть не получается wacko.gif
У меня есть главное меню с 2-мя пунктами. Из этих пунктов "появляется" еще одно подменю, из этого другое и т.д. У меня не получется сделать связь между менюшками и подменюшками. То есть если я нажму "ВЫХОД" из подменю, то я должен вернуться в "надменю". Вот мой вариант

main_menu(m_mas[1]); //в 1-й элемент массива я ложу то что "выбрали", т.е. 1-й или 2-й пункт меню
repeat
case m_mas[1] of
1:begin
menu_group(m_mas[2]); //здесь так же
menu_predmet(m_mas[2],m_mas[3]);
dob_prosm(m_mas[4]);
case m_mas[4] of
1:begin
menu_mes(m_mas[5]);
find_oc(m_mas[2],m_mas[3],m_mas[5]);
end;
2:begin
menu_mes(m_mas[5]);
add_oc(m_mas[2],m_mas[3],m_mas[5]);
end;
3:menu_predmet(m_mas[2],m_mas[3]); // тут по идее я должен вернуться в "надменю"
end;
end;
2:begin
menu2(m_mas[2]);
case m_mas[2] of
1:begin
menu_variant(m_mas[3]);
case m_mas[3] of
1:add_group;
2:begin
menu_group(m_mas[4]);
change_group(m_mas[4]);
end;
3:begin
menu_group(m_mas[4]);
del_group(m_mas[4]);
end;
4:menu2(m_mas[2]); //тут тоже надо вернуться в "надменю"
end;
end;
2:begin
menu_variant(m_mas[3]);
case m_mas[3] of
1:add_u4;
2:begin
prosm_pred(m_mas[4]);
change_u4(m_mas[4]);
end;
3:begin
prosm_pred(m_mas[4]);
del_u4(m_mas[4]);
end;
4:menu2(m_mas[2]);
end;
end;
3:begin
menu_variant(m_mas[3]);
case m_mas[3] of
1:begin
menu_group(m_mas[4]);
add_student(m_mas[4]);
end;
2:begin
menu_group(m_mas[4]);
change_student(m_mas[4]);
end;
3:begin
menu_group(m_mas[4]);
del_student(m_mas[4]);
end;
4:menu2(m_mas[2]);
end;
end;
4:main_menu(m_mas[1]);
end;
end;

end;
until m_mas[1]=3
Если я захожу в подменю, то чтобы вернуться назад, надо 2 раза нажать "выход" .А надо чтобы с одного нажатия.
Надеюсь на помощь smile.gif

Автор: volvo 18.06.2008 19:21

Что-то ты перемудрил по-моему... Вот так как-то должно быть (menu оформи не процедурами, а функциями, пример - по ссылке в моей подписи):

repeat
menu_res := main_menu; { рисуем основное меню и в menu_res берем выбор пользователя }
case menu_res of
1:
repeat
menu_second := sub_menu_1; { <--- рисуем первое подменю и получаем выбор пользователя }
case menu_second of
{ тут делаешь что тебе нужно в зависимости от выбора пользователя }
end;
until menu_second = 3; { <-- выход из подменю 1}
2:
repeat
menu_second := sub_menu_2; { <--- рисуем второе подменю и получаем выбор пользователя }
case menu_second of
{ тут делаешь что тебе нужно в зависимости от выбора пользователя }
end;
until menu_second = 3; { <-- выход из подменю 2}
end;
until menu_res = 3; { <--- Пока не надо выйти из основного меню }

Автор: Client 18.06.2008 19:54

Цитата
Что-то ты перемудрил по-моему
Ну это как всегда smile.gif
Спасибо, все получилось good.gif