Помощь - Поиск - Пользователи - Календарь
Полная версия: Меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Client
Привет!
Вот делаю меню, но чуть не получается 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
Что-то ты перемудрил по-моему... Вот так как-то должно быть (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
Цитата
Что-то ты перемудрил по-моему
Ну это как всегда smile.gif
Спасибо, все получилось good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.