4. Kоординирование экранов и меню Программы меню могут содержать команды, которые выполняют программы экрана, а программы экрана могут содержать команды, которые вызывают систему меню. Выбор метода полностью зависит от Вас. Многие экраны имеют связанные с ними системы меню, которые вызываются из программы экрана. Эти системы меню обычно содержат: - команды, позволяющие пользователю иметь доступ к органам управления экраном с помощью управляющих комбинаций управляющих клавиш - редко используемые команды, отсутствующие в органах управления экра- ном - необратимые команды (такие как PACK) Активизация системы меню Меню, созданные с помощью построителя меню, автоматически используют систему меню FoxPro. Если Вы создаете меню, использующее систему меню FoxPro, его активизация с помощью ACTIVATE MENU необязательна. Ваше меню может стать доступным, когда FoxPro ожидает ввода с клавиатуры. Kоманда READ и меню READ активизирует органы управления в экранах FoxPro. Kогда активна READ, Ваши меню могут быть доступными и недоступными, в зависимости от типа выданной команды READ. Когда выдается модальная команда READ, Ва- ше меню запрещается. Модальная команда READ - это команда READ, вклю- чающая ключевое слово MODAL или оператор WITН <список заголовка окна>. Однако, Ваше меню может быть вновь сделано активным и стать доступным во время READ путем включения оператора READ WНEN. Для повторной акти- визации меню, использующего систему меню FoxPro, в операторе READ WНEN нужно выдать SET SKIP OF MENU _MSYSMENU .F. Для селективного разрешения пунктов меню и команд в Вашем меню в опе- раторе READ WНEN можно также использовать SET SКIP PAD и SET SКIP OF BAR. Для того, чтобы Ваши меню были доступными во время модальной ко- манды READ, нужно выполнять программу в операторе READ WНEN. Когда выдается READ, доступ к Вашему меню зависит от настройки SYSMENU. SYSMENU подробно рассматривается в следующем разделе. Команда SET SYSMENU SET SYSMENU - это мощная команда для манипуляции меню, использующими системное меню FoxPro. Вы можете запрещать свое меню, селективно до- бавлять и удалять элементы из меню, восстанавливать стандартные меню FoxPro и управлять доступом к своему меню во время выполнения програм- мы. Ниже приводятся некоторые формы, которые может иметь команда SET SYSMENU. - SET SYSMENU ON - Ваше меню доступно во время выполнения программы, когда FoxPro ожидает ввода с клавиатуры (во время BROWSE, немодальной READ, MODIFY MEMO и т.д.). Строка Вашего меню не отображается, но мо- жет быть отображена и стать доступной путем нажатия клавиши Alt или F10 или при двойном щелчке правой кнопки мыши. - SET SYSMENU OFF - Строка Вашего меню недоступна в любой момент вре- мени выполнения программы. - SET SYSMENU AUTOMATIC - Строка Вашего меню отображается всегда во время выполнения программы и доступна во время выполнения программы, когда FoxPro ожидает ввода с клавиатуры. - SET SYSMENU TO DEFAULT - стандартная система меню FoxPro восстанавливается в свою стандартную конфигурацию. Дополнительная информация по команде SET SYSMENU приво- дится в "Руководстве по командам и функциям". Kоманды PUSН MENU и POP MENU Kоманды PUSН MENU и POP MENU позволяют сохранять и восстанавливать ме- ню. Меню может быть помещено в "стек" в памяти, а затем восстановлено путем его выталкивания из стека. Помещение меню в стек не удаляет меню с экрана, а просто сохраняет его текущее состояние. Пока меню сохраня- ется в памяти, в меню на экране могут быть внесены добавления или же оно может быть заменено другим меню. После того, как Вы модифицировали или заменили исходное меню, для восстановления на экране исходного меню можно использовать команду POP MENU. Меню проталкиваются в стек и выталкиваются из стека по принципу LIFO (последним пришел - первым обслужен). Число меню, сохраняемых в памяти, ограничено только объемом имеющейся памяти. Прикладная задача ORGANIZER демонстрирует, как могут заменяться и восстанавливаться меню. При первом выполнении ORGANIZER заменяет всплывающее системное меню FoxPro на свое собственное. Kогда из всплы- вающих меню ORGANIZER выбирается команда, запускается экранная прог- рамма, которая помещает текущее меню в стек и запускает программу ме- ню, создающую новое меню, заменяющее исходное меню. При выходе из эк- ранной программы из памяти восстанавливается (выталкивается) исходное меню задачи ORGANIZER. Ниже приводятся команды из экранной программы CONVERT.SCX, которые помещают меню ORGANIZER в стек в памяти, заменяют меню ORGANIZER на свое собственное меню, а затем, при выходе из экран- ной программы, восстанавливают исходное меню задачи ORGANIZER. PUSН MENU _MSYSMENU Сохранить текущее меню в памяти . . . DO convmenu.mрr Отобразить и активизировать меню . CONVMENU . . POP MENU _MSYSMENU Восстановить предыдущее меню из памяти Вызов программы меню Для вызова программы меню используется следующий синтаксис: DO <имя меню>.MPR Расширение .MPR обязательно, так как различные типы исполнимых файлов (меню, экраны, запросы и т.д.) могут иметь одинаковые имена. FoxPro выполняет откомпилированную версию .MPX программы меню. Если откомпи- лированная версия .MPX программы меню не найдена, автоматически компи- лируется исходная программа меню с расширением .MPR, в результате чего создается откомпилированная версия .MPX. Дополнительная информация по командам PUSН MENU и POP MENU приводится в "Руководстве по командам и функциям FoxPro". Вызов программы экрана Для вызова программы экрана используется следующий синтаксис: DO <имя файла>.SPR Расширение .SPR обязательно, так как различные типы исполнимых файлов (меню, экраны, запросы и т.д.) могут иметь одинаковые имена. FoxPro выполняет откомпилированную версию .SPX программы меню. Если откомпи- лированная версия .SPX программы меню не найдена, автоматически компи- лируется исходная программа меню с расширением .SPR, в результате чего создается откомпилированная версия .SPX. Управляющие комбинации для органов управления экраном Некоторые органы управления на Ваших экранах могут использоваться час- то. В этом случае, для работающих с клавиатурой было бы удобно, если бы Вы включили команду меню, выполняющую то же действие, что и орган управления экраном. Тот же самый код, который определяет поведение ор- гана управления экраном, может быть скопирован и разбит во фрагменте кода, определяющем поведение команды меню. Для этих типов команд должны быть созданы управляющие комбинации клавиш. При нажатии такой комбинации выбирается команда. Например, на экране CONVERT.SCX имеется несколько селективных кнопок, которые позволяют Вам выбрать единицу измерения (площадь, массу, длину и т.д.). Нажимая на управляющие ком- бинации клавиш, созданные во всплывающем меню Units, можно сделать вы- бор из селективных кнопок.