SendMessageToForm

From SunFlurry wiki
Jump to: navigation, search
  SendMessageToForm (Доставка сообщений)
Объект:Функции общего назначения
Статус разработки: Частичная реализация
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число, строку, неверный аргумент
Визуальность:Да

Функция осуществляет доставку пользовательского сообщения с параметрами указанной по серийному номеру форме. Для формы будет вызвано прерывающее визуальное событие OnMessage. Доставка также может быть осуществлена макросу, располагающемуся на форме или указанной по имени странице страничного элемента. Функция возвращается после обработки сообщения формой или ошибке при доставке. Серийный номер формы можно получить с помощью функции Form.SerialNumber или как один из аргументов функции LoadToolForm.

Синтаксис

SendMessageToForm(<Серийный номер формы (INT)>,<Код сообщения (INT)>,<Параметр>,<Опция>,<Гарантировать доставку (INT)>=1,<Имя макроса или страницы объекта формы (STRING)>=""):<Сообщение не было доставлено 0 или результат выполнения OnMessage>

Аргументы

  • <Серийный номер формы (INT)> - Серийный номер формы, которой необходимо отправить сообщение.
  • <Код сообщения (INT)> - Произвольный код сообщения, коды 1-10000 рекомендуется использовать для нужд проекта, остальные для нужд внешних обработок.
  • <Параметр>,<Опция> - (возможен аргумент-переменная (ByRef)) (необязательный аргумент) Произвольные параметры, передаваемые обработчику события OnMessage и доступные в нем под именами Param и Option. При этом событие может изменить эти переменные и изменение будет транслировано на локальные переменные после окончания работы обработчика.
  • <Гарантировать доставку (INT)> - (необязательный аргумент) Принимает значения: 1 (по умолчанию) -- поток будет ожидать окончания выполнения других событий и после этого будет запущено событие OnMessage, что может занять продолжительное время, 0 -- поток запустит событие OnMessage только в случае, если поток-получатель сейчас свободен (или выполняет прерываемую работу), иначе функция вернет 0.
  • <Имя макроса или страницы объекта формы (STRING)> - (планируется к реализации) Имя визуального объекта макроса или страницы страничного объекта в виде (<Имя страничного объекта>#<Номер или имя страницы объекта>). Если данный аргумент занят, сообщение будет доставлено не обработку самой формы, а указанному элементу формы, если он существует.

Возвращаемое значение

Возвращает 0 если сообщение не было доставлено или событие OnMessage не инициировано (форма с таким серийным номером не существует или была занята и пр.), в ином случае возвращает значение, которое доступно в переменной Result при выполнении события OnMessage. Переменная инициализируется числом 1, поэтому, если не используется более сложный механизм при передаче результата, можно считать, что 1 -- сообщение было доставлено и обработано (при этом само событие OnMessage имеет возможность изменить возвращаемое значение на 0). Если требуется возвращать другие результаты, нужно иметь в виду, что система в любом случае возвратит 0, если сообщение не было доставлено.

Примеры

//Обработчик визуального события OnMessage (редактируется в редакторе форм Студии)
Message("Было получено сообщение: "+Message+" с параметрами ""+Param+"",""+Option+"""");
//Отсылает сообщение 10001 без дополнительных параметров текущей форме
SendMessageToForm(Form.SerialNumber,10001);
//В лог будет выведено "Было получено сообщение: 10001 с параметрами "",""