Руководство разработчика

Функция ОКНО_СТАТУСА

Функция ОКНО_СТАТУСА позволяет управлять блокирующим окном статуса (прогресса выполнения). Окно статуса блокирует Главное окно программы Инфо_Бухгалтер, поэтому в данный момент времени возможно существование только одного окна статуса.

ФУНКЦИЯ ТИП_ЛОГИКА: ОКНО_СТАТУСА(ТИП_СТРОКА: команда [; ТИП_СТРОКА: парам ])

Параметры

команда
Определяет команду управления окном статуса. Допускаются следующие команды:
  • "CREATE" – создание окна статуса;
  • "CLOSE" – закрытие окна статуса;
  • "MESSAGE" – изменение текста сообщения в окне статуса;
  • "PROGRESS" – изменение текста индикатора прогресса;
  • "PERCENT" – изменение показания процентов индикатором прогресса.
парам
Дополнительный параметр, смысл которого определяется значением параметра команда:
  • CREATE – заголовок окна статуса;
  • CLOSE – не используется;
  • MESSAGE – текст сообщения;
  • PROGRESS – текст сообщения;
  • PERCENT – значение процентов в строковом виде (например, "15").

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

Функция возвращает ДА, если указанная команда выполнена успешно и пользователь не нажимал кнопку "Отмена" в окне статуса. Функция возвращает НЕТ для команды CREATE, когда окно статуса уже существует. Для всех команд, кроме CREATE и CLOSE, функция возвращает НЕТ, когда пользователь нажал кнопку "Отмена".

Замечания:

  1. Второе окно статуса не может быть создано даже в том случае, когда первое создал другой алгоритм (бланк, типовая операция или ibx).
  2. При выходе из алгоритма созданное им окно статуса автоматически закрывается.
  3. Вызов ОКНО_СТАТУСА("CLOSE") никогда не приводит к ошибке, всегда возвращает ДА.
  4. Управление окном статуса возможно только из того алгоритма, который его создал.
  5. Индикатор прогресса становится виден только после первой устаноки процентов.
  6. Для проверки нажатия кнопки "Отмена" без изменения текста или процентов можно вызывать ОКНО_СТАТУСА("").

Пример использования

Кол = 400
ЕСЛИ ОКНО_СТАТУСА("CREATE", "Идет обработка...") ТО
  ЦИКЛ ДЛЯ (и = 1, Кол)
  
    ок = ОКНО_СТАТУСА("MESSAGE", "Текущий элемент №" + СТР(и))
    
    проц = РУБ(100 * и / Кол)
    ок = ОКНО_СТАТУСА("PROGRESS", "Обработано " + СТР(и) + " из " + СТР(Кол) + " (" + СТР(проц) + "%)")
    ок = ОКНО_СТАТУСА("PERCENT", СТР(проц))

    ЕСЛИ НЕ ок ТО 
      СООБЩЕНИЕ("Обработка отменена!")
      СТОП
    КОНЕЦ_ЕСЛИ
       
    ПАУЗА(10) // выполняем работу...
  КОНЕЦ_ЦИКЛА
  ОКНО_СТАТУСА("CLOSE")
КОНЕЦ_ЕСЛИ

См. также: