Обработка событий
Для типов форм и элементов управления в модуле FC объявлены специальные поля: обработчики событий. Такому полю можно задать ссылку на функцию или метод формы, которые будут вызываться платформой при наступлении соответствующего события.
Приведем пример обработки нажатия на кнопку из раздела Представление форм в исходном тексте:
ТИП ПростейшийДиалог(ДИАЛОГ) [ ... КНОПКА: кнопка1 = [ левый = 10, верхний = 10, ширина = 70, высота = 30, текст = "Кнопка 1", нажатие = НажатаКнопка ]; ФУНКЦИЯ НажатаКнопка(ПЕРЕМ КНОПКА: кнопка) СООБЩЕНИЕ("Нажата кнопка: " + кнопка.текст) КОНЕЦ_ФУНКЦИИ ]
Для события нажатие типа КНОПКА задается вызов метода формы НажатаКнопка. Объявление события "нажатие" требует, чтобы функция-обработчик принимала в качестве параметра кнопку-инициатора события. Это позволяет использовать одну функцию-обработчик для приема событий от нескольких элементов управления.
В редакторе форм создание заготовки функции-обработчика автоматизировано. Для задания обработчика кнопки надо выбрать в инспекторе объектов закладку "События". В поле нужного события надо написать имя функции-обработчика (или выбрать из списка, если такая функция уже есть).
После нажатия клавиши Enter редактор форм закрывается с сохранением изменений и в исходный файл добавляется заготовка функции-обработчика с заданным именем. Остается написать тело функции-обработчика. В примере выше тело функции-обработчика показывает сообщение "Нажата кнопка: Кнопка 1".
При изменении пользователем текста в полях ввода, выделенного элемента в списках и т.п. происходит внутренняя обработка этих событий, в результате чего соответствующие поля элементов управления принимают новые значения. Например, при снятии "галочки" в элементе ОПЦИЯ поле логического типа "выбор" меняет значение с ДА на НЕТ. Это изменение происходит до вызова обработчика "изменение" так, что функция-обработчик получает обновленное значение.
Для обратного обмена с элементами управления служит метод ОБНОВИТЬ. Для изменения любых параметров элемента достаточно установить необходимые значения полей и вызывать метод ОБНОВИТЬ для этого элемента. Для обновления всех элементов можно вызвать метод ОБНОВИТЬ для формы.
Диалоговая форма позволяет обрабатывать некоторые собственные события, такие как открытие и закрытие. Обработчик "открытие" особенно важен, т.к. вызывается, когда окно формы уже создано, но еще не видимо на экране. В этом обработчике можно произвести дополнительную настройку формы, добавить динамические элементы управления и т.п. Следующий пример демонстрирует установку обработчика "открытие":
ТИП ПростейшийДиалог(ДИАЛОГ) [ ... ОБРАБОТЧИК открытие = ОткрытиеФормы; ФУНКЦИЯ ОткрытиеФормы ... КОНЕЦ_ФУНКЦИИ ]
Элементы управления модуля FC позволяют обрабатывать события нажатия на некоторые клавиши, команды от меню и панелей инструментов, запросы на формирования контекстных меню и многое другое.
В Инфо-Бухгалтер 8 единственным обрабатываемым программно событием является нажатие на кнопку у графы с вызовом функции. |