STDMSG(message: STRING[]; style: STYLE; [ abortCode: NUMERIC[0]; ] [ VAR timeout: FLOAT; ] [ useProportionalBasicTextFont: SCAL[2] ]); STDMSG(message: STRING[][]; style: STYLE; [ abortCode: NUMERIC[0]; ] [ VAR timeout: FLOAT; ] [ useProportionalBasicTextFont: SCAL[2] ]); STYLE = STOP | TRY_LATER | STOP_AND_CALL_ADMIN | STOP_AND_CALL_AUTHOR | MENU | CHOICE | QUESTION | INFORM | INFORM_RED | INFORM_NEUTRAL | NONE | LIKE_WDO |
Поднимает сообщение с одной или двумя кнопками и текстом message. Параметр style определяет стиль сообщения и набор кнопок. Параметр abortCode задает ненулевой код исключения, которое будет выброшено по нажатию кнопки отказа "Стоп!". Если abortCode равен нулю, будет выброшено исключение 19. По умолчанию используется код исключения -1. Если задана переменная timeout, кнопки "Стоп!" и "Ok" считаются таймированными, т.е. снабжаются обратным счетчиком времени, по истечении которого имитируется нажатие кнопки. По выходу из процедуры переменная timeout содержит неиспользованный остаток таймаута, либо нуль.
Начиная с версии 14.266.020 поддержано отображение основного текста сообщения пропорциональным шрифтом. Параметр useProportionalBasicTextFont позволяет запретить применение пропорционального шрифта для основного текста сообщения. Если флаг поднят, основной текст сообщения отображается пропорциональным шрифтом, заданным свойством APP.ProportionalFontFace. В режиме разработчика или для программиста в инженерной копии проекта, а начиная с версии 14.274.170 безусловно, значение useProportionalBasicTextFont по умолчанию равно 1.
Содержание |
Параметр message содержит текст сообщения и
может быть либо строкой, либо массивом
строк. Если message - массив строк, каждый
элемент массива будет выведен с новой строки. Массивовый вариант процедуры
является устаревшим, пользоваться им не рекомендуется. Переводы строк следует
задавать символом '|'
, символом CHR(10)
, или
подстрокой CHR(13)+CHR(10)
. Горизонтальные отчеркивания задаются
тэгом отчеркивания (с параметром
TITLE или без него), например
CHR(29)+"HR TITLE='Рекомендация'"+CHR(29)
. Начиная с
версии 14.248.010 перед тэгом отчеркивания безусловно добавляется перевод
строки. До версии 14.248.010 перевод строки перед тэгом отчеркивания добавлялся,
только если он отсутствовал. После тэга отчеркивания перевод строк выполняется
безусловно. Например, строка
"текст 1"+CHR(10)+CHR(29)+"HR"+CHR(29)+CHR(10)+"текст 2"
даст
следующий результат (здесь не указаны отступы, про которые см. ниже
"Текстовый и графический виды"):
Начиная с версии 14.268.020, если блок текста, единственный в сообщении, или выделенный отчеркиванием или отчеркиваниями, разделен переводами строк на строки с равным количеством символов (начиная с версии 14.268.040 учитываются только строки с ненулевым количеством символов; начиная с версии 14.272.070 при подсчете количества символов не учитываются символы табуляции), строки в этом блоке выравниваются между собой по левому краю. Начиная с версии 14.272.070 при отображении таких блоков применяется табличное выравнивание.
Чтобы размер сообщения не превышал текущей ширины консоли, текст сообщения автоматически форматируется, т.е. добавляются переводы строк. Чтобы размер сообщения не превышал текущей высоты консоли, текст сообщения отсекается снизу. Все строки формы автоматически выравниваются по центру.
До версии
14.155.170 существовало только три стиля: STOP
,
CHOICE
, INFORM
; впоследствии стилей стало гораздо больше. Стиль INFORM_NEUTRAL
был добавлен только в версии 14.170.190. Сообщение любого стиля, кроме MENU
, может быть отображено либо в текстовом,
либо в графическом виде; вид определяется свойством
ASBCONNECTION.GUI.
В графическом представлении стиль определяет иконку формы, цвета рамки,
заголовка, верхней и нижней панелей формы, в текстовом виде - палитру. Сообщения стиля MENU
допустимы только в текстовом представлении.
Стиль | Графическое представление | Текстовое представление | ||
---|---|---|---|---|
Иконка | Цвет рамки и заголовка | Цвета панелей | Палитра | |
STOP |
Дорожный знак "проезд запрещен" (кирпич) | Красный | APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Тревожная (красная) |
TRY_LATER |
Песочные часы | Красный | APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Тревожная (красная) |
STOP_AND_CALL_ADMIN |
Стилизованное изображение администратора | Красный | APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Тревожная (красная) |
STOP_AND_CALL_AUTHOR |
Дорожный знак "дорожные работы" (копатель) | Красный | APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Тревожная (красная) |
CHOICE |
Восклицательный знак в желтом треугольнике | Желтый | APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Тревожная (красная) |
QUESTION |
Вопросительный знак в синем круге | Нейтральный APP.ExtraColor_NCActiveBackground / ExtraColor_NCInactiveBackground |
APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Информационная (синяя) |
INFORM |
"Галочка" в синем круге | Нейтральный APP.ExtraColor_NCActiveBackground / ExtraColor_NCInactiveBackground |
APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Информационная (синяя) |
INFORM_RED |
Восклицательный знак в красном треугольнике | Нейтральный APP.ExtraColor_NCActiveBackground / ExtraColor_NCInactiveBackground |
APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Тревожная (красная) |
INFORM_NEUTRAL |
Отсутствует | Нейтральный APP.ExtraColor_NCActiveBackground / ExtraColor_NCInactiveBackground |
APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Нейтральная (серая) |
NONE |
Отсутствует | Нейтральный APP.ExtraColor_NCActiveBackground / ExtraColor_NCInactiveBackground |
APP.ExtraColor_DialogPrimaryPaneBackground / APP.ExtraColor_DialogSecondaryPaneBackground | Нейтральная (серая) |
LIKE_WDO |
Отсутствует | Нейтральный APP.ExtraColor_NCActiveBackground / ExtraColor_NCInactiveBackground |
APP.PaletteKit.TextPalette[FORM_FIELD.Color_Text].BkColor / APP.ExtraColor_SecondaryPaneBackground | Нейтральная (серая) |
MENU |
Палитра меню (черная) |
До версии 14.180.010 в сообщения стилей
TRY_LATER
,
STOP_AND_CALL_ADMIN
,
STOP_AND_CALL_AUTHOR
, не содержащие тэгов отчеркивания, вставлялся текст
рекомендации пользователю;
TRY_LATER
- "Вам мешает другое подключение. Попробуйте
выполнить операцию еще раз",
STOP_AND_CALL_ADMIN
- "Обратитесь к Администратору",
STOP_AND_CALL_AUTHOR
- "Обратитесь к Разработчикам".
Начиная с версии 14.180.010 текст рекомендации больше не добавляется,
программист может добавить нужный текст явно.
В сообщениях со стилями STOP
, TRY_LATER
,
STOP_AND_CALL_ADMIN
, STOP_AND_CALL_AUTHOR
,
MENU
, NONE
, LIKE_WDO
присутствует только кнопка отказа
"Стоп!". Сообщения со стилями CHOICE
и
QUESTION
содержат кнопку отказа "Стоп!" и кнопку успеха
"Выполнить" (по умолчанию). В сообщениях с информационными
стилями INFORM
, INFORM_RED
,
INFORM_NEUTRAL
одна кнопка успеха: "Ok".
При нажатию кнопки отказа "Стоп!"
выбрасывается исключение класса Exc_Raise с
кодом abortCode и описанием message. Соответственно, в описании исключения могут
присутствовать переводы строк и тэги отчеркивания. Функция Str.Flatten
позволяет убрать их и получить строку, пригодную для записи в БД или
протокол. По нажатию кнопки успеха процедура завершается нормально. Сообщения со стилями INFORM
, INFORM_RED
и INFORM_NEUTRAL
не содержат кнопки
"Стоп!", поэтому параметр abortCode значения не имеет; исключение все
равно не может быть выброшено.
Нетаймированные сообщения с единственной кнопкой отказа "Стоп!" являются откладываемыми. Поднятие такого сообщения откладывается до момента, когда связанное с ним исключение не приведет к останову программного комплекса; отложенное сообщение становится скрытым свойством исключения (см. Exc_Root.HasDeferredMsg). Если исключение будет обработано, отложенное сообщение показано не будет.
При подавлении сообщения, содержащего кнопку отказа "Стоп!", искаженная до состояния откладываемой копия сообщения становится скрытым свойством исключения (см. Exc_Root.HasSuppressedMsg). При искажении кнопки успеха запрещаются, таймирование отключается. Информационные сообщения не содержат кнопки отказа и в случае подавления не связываются с исключением.
Особенности отображения формы в текстовом и графическом виде представлены в таблице.
Детали отображения | Текстовый вид | Графический вид |
---|---|---|
Поднятие сообщения | Консоль клиента ASB автоматически поднимается на передний план аналогично действию BRINGTOFOREGROUND | Если главное окно клиента ASB неактивно, заголовок главного окна и значок в панели задач подсвечиваются |
Края формы | От псевдографической рамки слева и справа отступается по два знакоместа | От края окна отступается 0.75 ширины знакоместа |
Тэг отчеркивания | Отображается псевдографикой | Отображается графическим отчеркиванием |
Выделение текста перед первым тэгом отчеркивания | Нет | Дополнительно отступается по одному знакоместу перед текстом и после текста |
Группировка кнопок | Кнопки не группируются | Кнопки, расположенные ниже текста, всех полей, списков, селекторов и флажков формы, группируются на панели кнопок и выравниваются вправо. Прочие кнопки не группируются |
STDMSG("Документ не за текущий период",
STOP);
STDMSG("Текущий период - "+PeriodStr(Memo.MonthB)+"|Расчетный период - "+PeriodStr(ClcPer()), CHOICE);
TIM0 := 10;
STDMSG("Пора домой!", INFORM, , TIM0);