Руководство разработчика

Обработка событий

Для типов форм и элементов управления в модуле FC объявлены специальные поля: обработчики событий. Такому полю можно задать ссылку на функцию или метод формы, которые будут вызываться платформой при наступлении соответствующего события.

Приведем пример обработки нажатия на кнопку из раздела Представление форм в исходном тексте:

ТИП ПростейшийДиалог(ДИАЛОГ)
[
    ...
  
    КНОПКА: кнопка1 = [ левый = 10, 
                        верхний = 10,
                        ширина = 70,
                        высота = 30,
                        текст = "Кнопка 1",
                        нажатие = НажатаКнопка	
                      ];
  
    ФУНКЦИЯ НажатаКнопка(ПЕРЕМ КНОПКА: кнопка)
        СООБЩЕНИЕ("Нажата кнопка: " + кнопка.текст)
    КОНЕЦ_ФУНКЦИИ
]

Для события нажатие типа КНОПКА задается вызов метода формы НажатаКнопка. Объявление события "нажатие" требует, чтобы функция-обработчик принимала в качестве параметра кнопку-инициатора события. Это позволяет использовать одну функцию-обработчик для приема событий от нескольких элементов управления.

В редакторе форм создание заготовки функции-обработчика автоматизировано. Для задания обработчика кнопки надо выбрать в инспекторе объектов закладку "События". В поле нужного события надо написать имя функции-обработчика (или выбрать из списка, если такая функция уже есть).

После нажатия клавиши Enter редактор форм закрывается с сохранением изменений и в исходный файл добавляется заготовка функции-обработчика с заданным именем. Остается написать тело функции-обработчика. В примере выше тело функции-обработчика показывает сообщение "Нажата кнопка: Кнопка 1".

При изменении пользователем текста в полях ввода, выделенного элемента в списках и т.п. происходит внутренняя обработка этих событий, в результате чего соответствующие поля элементов управления принимают новые значения. Например, при снятии "галочки" в элементе ОПЦИЯ поле логического типа "выбор" меняет значение с ДА на НЕТ. Это изменение происходит до вызова обработчика "изменение" так, что функция-обработчик получает обновленное значение.

Для обратного обмена с элементами управления служит метод ОБНОВИТЬ. Для изменения любых параметров элемента достаточно установить необходимые значения полей и вызывать метод ОБНОВИТЬ для этого элемента. Для обновления всех элементов можно вызвать метод ОБНОВИТЬ для формы.

Диалоговая форма позволяет обрабатывать некоторые собственные события, такие как открытие и закрытие. Обработчик "открытие" особенно важен, т.к. вызывается, когда окно формы уже создано, но еще не видимо на экране. В этом обработчике можно произвести дополнительную настройку формы, добавить динамические элементы управления и т.п. Следующий пример демонстрирует установку обработчика "открытие":

ТИП ПростейшийДиалог(ДИАЛОГ)
[
    ...
    ОБРАБОТЧИК открытие = ОткрытиеФормы;

    ФУНКЦИЯ ОткрытиеФормы
        ...
    КОНЕЦ_ФУНКЦИИ
]

Элементы управления модуля FC позволяют обрабатывать события нажатия на некоторые клавиши, команды от меню и панелей инструментов, запросы на формирования контекстных меню и многое другое.

В Инфо-Бухгалтер 8 единственным обрабатываемым программно событием является нажатие на кнопку у графы с вызовом функции.