ОБРАБОТКА СОБЫТИЙ В Visual FoxPro
Теоретические сведения. Модель события Visual FoxPro позволяет программисту разрабатывать истинно немодальные приложения, то есть дает возможность, например, автоматически координировать множественные формы и одновременно выполнять множественные экземпляры форм. Окно или форма является немодальным, если пользователь не должен закрывать их перед переключением к другой форме или окну. Система обработки событий Visual FoxPro автоматически вызывает код события в ответ на действия пользователя, нужно только посредством определения класса объекта управления определить, что должно произойти после выбора данного объекта управления, а для последующей обработки не следует писать никакого дополнительного кода. В общем случае событие – это переход объекта из одного состояния в другое. К основным событиям можно отнести загрузку формы (Load), удаление формы (Unload), инициализация объекта (Init), щелчок мыши (Click), активизация (GotFocus), деактивизация (LotFocus) и другие. Событие RightClick происходит при нажатии на правую кнопку мыши. Перекрыв это событие можно создать всплывающее меню. Для этого на уровне формы, перекрыв события Init или Load, описывается меню с помощью операторов вида: DEFINE POPUP < имя меню> IN WINDOW < имя формы, в которой используется меню> DEFINE BAR < номер пункта меню> OF < имя меню> PROMPT “название пункта меню” Для описания действий при выборе пунктов меню используются операторы ON SELECTION POPUP < имя меню> DO < имя командного файла, запускаемого при выборе пунктов меню>.PRG (Например меню сосоит из двух пунктов: А и В, тогда для его описания нужна последовательность команд: DEFINE POPUP m IN WINDOW form1 DEFINE BAR 1 OF m PROMPT “А” DEFINE BAR 2 OF m PROMPT “В” ON SELECTION POPUP m g.prg) Перекрыв событие нажатия правой кнопки мыши, например на уровне формы, вызывается созданное меню: MOVE POPUP < имя меню> TO < номер строки, номер столбца, где будет отображено меню> ACTIVATE POPUP < имя меню> (В нашем примере: move popup m to 6, 35 activate popup m) Кроме этого должен быть описан программный файл, показывающий действия при выборе пунктов меню. (В нашем примере это g.prg: PROCEDURE G IF BAR()=1 MESSAGE(“текст1”) ELSE MESSAGE(“текст2”) ENDIF ENDPROC) Событие Valid происходит на уровне ввода значения в поле базы данных. Это событие возвращает.T., если данное удовлетворяет условию, иначе данное не вводится в базу данных и остается в режиме ожидания ввода в поле. Например, код события может включать следующие команды: IF THIS.VALUE > < значение типа поля ввода> RETURN.T. ELSE RETURN.F. ENDIF) Событие GotFocus возникает при активизации объекта, а LostFocus при деактивизации объекта. Перекрыв эти события на уровне поля можно при попадания фокуса на поле выделить его цветом, набрав последовательность команд: THIS.FORECOLOR=RGB(0, 0, 0) THIS.BACKCOLOR=RGB(255, 0, 0) При потере фокуса – последовательность команд: THIS.FORECOLOR=RGB(0, 0, 0) THIS.BACKCOLOR=RGB(255, 255, 255) Обработка события Message приводит к выводу сообщения в стоке статуса. Обработка события Programmatic Change происходит при изменении у объекта свойства Value программным путём, то есть, когда в программе есть код Object.Value=значение. Задание на лабораторную работу.
1. Создать всплывающее меню при работе на уровне поля, содержащее пункты: ввод значение по умолчанию, очищение поля. 2. Выполнить проверку значения вводимой даты поступления в институт до ввода в базу данных. 3. Вывести сообщение в строку статуса, поясняющее содержимое поля ввода при появлении фокуса в этом поле. 4. Выделить поле особым цветом при попадании фокуса в это поле и вернуть прежний цвет при потере фокуса.
Вопросы.
1. Что такое событие? 2. Каков механизм обработки событий в Visual FoxPro? 3. Какие основные события Вы знаете? 4. Каким образом создается всплывающее меню?
|