Difference between revisions of "Form.InvokeEvent"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(No difference)

Latest revision as of 08:50, 7 February 2021

  InvokeEvent (Вызов визуального события)
Объект:Форма
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Форма не визуальная или не загружена, невозможно превратить в строку, неверные параметры
Визуальность:Да

Функция инициирует выполнение указанного визуального события привязанного либо к визуальному элементу формы (если оный адресуется объектом, к примеру OnInitLine), либо к самой форме (к примеру OnOpen). Разработчик должен указать все переменные, участвующие в событие и задать их значения. Если какая-то из переменных не будет указана, при обращении к ней в момент выполнения события будет вызвано исключение. Событие выполняется в синхронном режиме (т.е. является прерывающим событием), управление не будет возвращено до тех пор, пока не закончится выполнение события. Изменения в переменных внутри события будут транслированы на переменные, переданные в виде аргументов события в момент окончания выполнения события. Некоторые события (к примеру, OnOpen) могут быть вызваны несколько раз, если они заданы на вложенных формах макросов или закладках. Функция применяется к загруженной визуальной форме или ее элементу. Ниже дан краткий список возможных событий (описания и необходимый набор переменных см. в описании Студии):

  • События, применяемые к форме: OnOpen, OnClose, OnTimer, OnSaveRequest, OnStatusChange, OnTaskbarMenuClick, OnMessage, OnSaveSettings, OnLoadSettings, OnAfterLoadSettings
  • События, применяемые к визуальным элементам формы: OnGetCaption, OnClick, OnDoubleClick, OnRightClick, OnKeyPress, OnChangeOrClick, OnBeforeChange, OnAfterChange, OnBeforeEditLine, OnAfterEditLine, OnBeforeEditCell, OnAfterEditCell, OnBeforeEdit, OnAfterEdit, OnGetLine, OnGetVisualProperties, OnGetCellVisualProperties, OnGetFormNameForOperation, OnChecking, OnMoveToFolder, OnSaveLoadObject, OnSelectionChange, OnAttachedButtons, OnBeforeResize, OnAfterResize, OnEnter, OnExit, OnInitLine, OnShowLine, OnBeforeSelect, OnGetRightClickMenu, OnBeforeEditObject, OnInitCombobox, OnInitLeaf, OnBeforeLoadElements, OnAfterNewElementCreated, OnBeforeElementSaved, OnAfterElementSaved, OnBeforeRefresh, OnAfterFilterChange, OnAfterSorting


Синтаксис

Form.InvokeEvent(<Имя события (STRING)>,<Имена переменных, передаваемых событию, через запятые (STRING)>,<Значение переменной 1>,<Значение переменной 2>...)

Аргументы

  • <Имя события (STRING)> - Задает наименование события, исполнение которого нужно инициировать. Регистр наименования не имеет значения.
  • <Имена переменных, передаваемых событию, через запятые (STRING)> - Задает наименования переменных, значения котороых будут переданы в вызываемое событие. Переменные задаются через запятую. Регистр написания наименований не имеет значения.
  • <Значение переменной 1>, <Значение переменной 2>... - (необязательный аргумент) (возможен аргумент-переменная (ByRef)) Задает аргументы, значениями которых будут заполнены переменные при вызове события. Если аргумент описывается переменной, а не выражением, после выполнения функции, значение переменной может быть обновлено, если оно было изменено внутри события.

Примеры

//Вызов события OnInitLine таблицы MainTab после программного изменения строк таблицы
Form.MainTab.InvokeEvent("OnInitLine","IndexFrom,IndexTo",1,aTab.Size());

//Привязка полей к реквизитам редактируемого объекта (к примеру, в макросах),
//  и вызов события формы OnStatusChange для обновления общих параметров формы
Form.cName.BindToProperty("Name");
Form.cCode.BindToProperty("Code");
Form.InvokeEvent("OnStatusChange");
If Form.Object.Status()<0 Then
  Form.cName.SetFocus();
Else
  Form.bPanelClose.SetFocus();
Endif;