Создание меню визуальными средствами FoxPro
Создание пользовательского меню производится средствами конструктора меню (Menu Designer). Его запуск производится командой File→New→Menu→New file.
В открывшемся диалоговом окне New Menu из предложенных вариантов:
а) Menu – линейное (Bar-меню);
б) Shortcut – всплывающее (Popup-меню)
выберите пункт Menu. Откроется окно Menu Designer (Конструктор меню) – Menu1 (рис.27).
При этом в основном меню программы Visual FoxPro появится пункт Menu для работы с создаваемым меню.
Рисунок 1. Окно конструктора меню (Menu Designer). Создание пункта Service
Рассмотрим создание меню на примере. Например, горизонтальное меню будет состоять из двух Pad-пунктов:
• Service (Сервис). Пункт меню Service будет открывать всплывающее (Popup) меню, содержащее строки вызова календаря и калькулятора;
• Exit.Выход из программы и очистка экрана.
Прежде всего, следует создать пункты горизонтальной строки меню. В колонку Prompt(подсказка) окна Menu Designer введите название пункта меню, в нашем случае Service. Русские названия пунктов меню вводить нельзя.
В колонке Result можно выбрать один из вариантов действия на выбор данного пункта меню:
• Command. Выполняется команда, которая записывается правее колонки Result;
• Submenu (Подменю). Создаётся всплывающее меню. Для определения его пунктов щелкните на кнопке Create, появившейся справа.
• Procedure. Выполняется процедура (последовательность команд), для создания которой необходимо щелкнуть на кнопке Create, что вызовет открытие окна редактора.
• Pad Name или Bar #. Позволяет использовать элементы системного меню (при вводе одной из команд, предусмотренных для этой цели в программе FoxPro).
В нашем случае выберите пункт Submenu (подменю), поскольку нам требуется создать два пункта всплывающего меню (для запуска календаря и дневника). Щёлкните по кнопке Create. В открывшемся окне введите соответствующие команды, как показано на рисунке.
Для возврата к предыдущему окну (на самый верхний уровень меню) выберите в поле Menu Level (Уровень меню), предназначенном для перемещения по уровням меню, строку Bar.
Вторым нашего горизонтального меню будет пункт Exit (Выход), которыйследует ввести в поле Prompt. Здесь предполагает вызов процедуры, завершающий пользование созданным меню и возврат к стандартному главному меню. Выберите пункт Procedure в поле Resultи щелкните по кнопке Create.
В открывшемся окне Menu Designer – Menu 2 – Exit Procedure запишите показанный ниже код процедуры выхода из меню, который содержит команды для очистки экрана от системныхокон и окна формы.
Рисунок 2. Окно конструктора меню. Создание пунктов подменю
RELEASE WINDOW CALENDAR
RELEASE WINDOW CALCULATOR && закрываются окна
CLEAR WINDOWS && закрываются окна
SET SYSMENU TO DEFAULT && устанавливается меню по умолчанию
CLOSE ALL && закрываются все файлы
Закончив ввод процедуры, закройте окно редактора, в которое вводили процедуру. Произойдёт переход в предыдущее окно, процедура будет автоматически сохранена.
При запуске меню автоматически выполняется команда READ EVENTS, которая включает механизм обработки событий. Этот механизм реагирует на перемещение по пунктам меню и обеспечивает передачу событий формам и объектам в них, в том числе и меню.
Отключение механизма обработки событий выполняется командой CLEAR EVENTS. При этом обработка событий прекращается, но объект остается активным.
Далее следует создать программный файл меню. Для этого в меню Menu выберите пункт Generate. При этом потребуется ввести имя файла меню. Будут созданы два файла описания меню с расширениями .mnx и .mnt (расширения будут подставлены автоматически). После этого откроется окно Generate menu, где будет указано имя создаваемого программного файла (Output file), имеющего расширение .mpr. Дайте файлу имя и нажмите кнопку Generate. Теперь можно закрыть окно создания меню. Таким образом, при создании меню созданы три файла, отличающиеся расширением.
Запуск меню
Для запуска меню выберите пункт DO! в меню Program. В открывшемся окне DO выберите файл меню с расширением .mpr и нажмите ввод. Заметьте, что меню, созданное вами,появилось взамен главного меню FoxPro. Опробуйте действия всех пунктов меню. Для выхода используйте пункт Exit созданного меню.
Обратите внимание на то, что после запуска программы появился четвёртый файл – скомпилированный программный файл меню, имеющий расширение .mpx
Понятие события и метода
Работа с объектами Visual FoxPro управляется событиями. Событие (Event) происходит, если пользователь щёлкнул кнопкой мыши (Click), переместил объект (DragDrop), выбрал другой объект (LostFocus) и.д.
Для того, чтобы программа Visual FoxPro могла реагировать на события, служит команда READ EVENTS. Эта команда выполняется автоматически при запуске меню, использовании формы и в других случаях, когда VFP должна реагировать на события. При возникновении события, на которое способен реагировать объект, выполняется связанный с ним программный код метода обработки этого события (Method).
Код метода создаётся в текстовом редакторе как обычная программа. В состав объекта включены методы обработки различных событий, представляющие собой присоединённые к объекту процедуры. Метод может также вызваться на исполнение независимо от объекта. Примерами методов служат: RemoveObject – удаление объекта из контейнера, CloseTables – закрытие таблицы, Show – вывод формы на экран.
Объектная модель Visual FoxPro поддерживает более 100 событий, около 100 методов и сотни свойств. Перечень всех используемых в Visual FoxPro объектов, свойств, методов и событий можно найти в документации к программе и в рекомендуемой литературе 1. Объекту можно добавлять новые свойства и создавать собственные методы, но нельзя добавить новое событие.
Для того, чтобы объект реагировал на событие, следует использовать окно Properties, работа с которым рассмотрена ниже. Пример рассмотрен далее, см. главу «обработка событий».
Пример обработки события
В форму часто приходится встраивать кнопки, нажатие которых вызывает действие, определённое пользователем. Для создания кнопки используйте инструмент Command Button(Командная кнопка) на панели Form Controls. Создадим кнопку для выхода из формы.
После создания кнопки задайте на ней надпись «Выход», скорректировав свойство Caption (Заголовок). С этой целью разместите в поле ввода окна Properties текст, который будет отображаться на кнопке.
Послеразмещения кнопки в форме необходимо определить реакцию кнопки на щелчок мышью, т.е произвести обработку щелчка мышью по созданной кнопке Выход (события Click). Для этого необходимо создать программный код (процедуру), который будет выполняться после щелчка.
В окне Properties(Свойства) выберите вкладку Methods(Методы). Установите курсор на метод Click (Щелчок) и выполните двойной щелчок мышью. На экране откроется окно создания процедур. Введите команды, которые должны выполняться при нажатии на данную кнопку. Программный код показан на рис.36.
Сохраните введенный программный код через меню File → Save. Закройте окно процедур, нажатием клавиши ESC или через меню File → Close. Запустите форму на исполнение и проверьте работоспособность созданной кнопки.