PostMessageToForm

From SunFlurry wiki
Revision as of 22:39, 3 December 2020 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  PostMessageToForm (Доставка сообщений)
Объект:Функции общего назначения
Статус разработки: Частичная реализация
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число, строку, неверный аргумент
Визуальность:Да

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

Синтаксис

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

Аргументы

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

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

Возвращает 0 если сообщение не было доставлено или событие OnMessage не инициировано (форма с таким серийным номером не существует или была занята и пр.), в ином случае возвращает 1.

Примеры

//Обработчик визуального события OnMessage (редактируется в редакторе форм Студии)
Sleep(1000);
Message("Было получено сообщение: "+Message+" с параметрами ""+Param+"",""+Option+"""");
//Отсылает сообщение 10001 без дополнительных параметров текущей форме
PostMessageToForm(<Серийный номер формы с обтаботчиком>,10001);
Message("Проверка последовательности выполнения функций");
//Для текущей формы, в лог будет выведено: "Было получено сообщение: 10001 с параметрами "",""
//  затем "Проверка последовательности выполнения функций" (если код вызывался из асинхронного события)
//Для формы другого потока: "Проверка последовательности выполнения функций" 
//  затем "Было получено сообщение: 10001 с параметрами "",""