STDMSG


Синтаксис

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.

Содержание

  1. Текст сообщения
  2. Стиль
  3. Кнопки и выброс исключение
  4. Откладывание
  5. Подавление
  6. Текстовый и графический виды

Текст сообщения

Параметр 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 ширины знакоместа
Тэг отчеркивания Отображается псевдографикой Отображается графическим отчеркиванием
Выделение текста перед первым тэгом отчеркивания Нет Дополнительно отступается по одному знакоместу перед текстом и после текста
Группировка кнопок Кнопки не группируются Кнопки, расположенные ниже текста, всех полей, списков, селекторов и флажков формы, группируются на панели кнопок и выравниваются вправо. Прочие кнопки не группируются

Пример 1

STDMSG("Документ не за текущий период", STOP);

 

Пример 2

STDMSG("Текущий период - "+PeriodStr(Memo.MonthB)+"|Расчетный период - "+PeriodStr(ClcPer()), CHOICE);

Пример 3

TIM0 := 10;
STDMSG("Пора домой!", INFORM, , TIM0);

См. также