Этот класс обеспечивает конфигурируемую пользователем обратную связь с выполнением отчета. Приложение, выполняющее отчет, использует UpdateListener как определенный по умолчанию класс ReportListener для печати и предварительного просмотра (ListenerType значения 0 и 1).

Категория Описание

Каталог по умолчанию

Visual FoxPro Catalog\Foundation Classes\Output\Report Listeners

Класс

UpdateListener

Базовый класс

ReportListener

Библиотека класса

_REPORTLISTENER.vcx

Родительский класс

_ReportListener (ReportListener Base Foundation Class)

Замечания

Проект UpdateListener имеет следующие цели:

  • Удобство локализации и настройки продукта под требования пользователя. Все заголовки и сообщения UpdateListener показывает при выполнении отчета, также и размеры окна представлены общедоступными свойствами. UpdateListener динамически проверяет любые изменения, которые вы делаете в базовой конфигурации и настраивает показываемые элементы.

  • Усовершенствованная обратная связь информации о выполнении отчета. UpdateListener замещает/отвергает базовые вызовы ReportListener.UpdateStatus, которые происходят на каждой странице, чтобы отобразить более тонко настроенную информацию о выполнении отчета согласно области отчета. Механизм обратной связи различается между начальным проходом и последующим проходом, использующим свойства ReportListener.TwoPassProcess и ReportListener.CurrentPass. Более подробно смотрите Объект ReportListener - свойства, методы и события..

  • Доступность информации о выполнении отчета. UpdateListener использует свойства reportStartRunDatetime and reportStopRunDatetime, чтобы отобразить необязательную информацию о выполнении отчета, но вы можете использовать их после того, как завершится выполнение отчета.

  • Возможность остановить и продолжить выполнение отчета. UpdateListener управляет нажатием Escape во время выполнения отчета при выполнении прогонов отчета. Он сохраняет и восстанавливает соответственно ваш код обработки клавиш.

  • Никакой зависимости от внешних классов. UpdateListener использует единственный защищенный метод, createTherm(), чтобы создать окно обратной связи. Нет внешних библиотечных форм или классов; этот класс создает и конфигурирует окно полностью в пределах кода метода createTherm().

Замечание:
Report Output-приложения используют UpdateListener по умолчанию в качестве ReportListener для обычных форматов вывода (отчеты и этикетки). Ваш "подкласс" может отвергнуть процедуру createTherm() и использовать вместо нее код метода DoStatus().

Следующая таблица содержит список общедоступных свойств, добавленных этим классом его родительскому классу, _ReportListener. UpdateListener не добавляет общедоступных методов.

Свойства Описание

includeSeconds Property

Указывает, должно ли по умолчанию сообщение обратной связи пользователя включить синхронизацию данных.

Default .T.

initStatusText Property

Показывает пользовательское сообщение, когда обратная связь пользователя появляется первой.

Default "Initializing... "

Замечание: Смотрите REPORTLISTENERS_LOCS.H,который показывает локализуемое значение, для которого это свойство установлено в методе Init класса.

prepassStatusText Property

Показывает пользовательское сообщение обратной связи для использования в отчете при проходе пред-генерации для вычисления _PAGETOTAL.

Default "Running calculation prepass... "

Замечание: Смотрите REPORTLISTENERS_LOCS.H, который показывает локализуемое значение, для которого это свойство установлено в методе Init класса.

reportStartRunDatetime Property

Индицируется значение datetime, если последняя генерация отчета начата.

Default DTOT({})

reportStopRunDatetime Property

Значение datetime (даты и времени) используется в итогах отчета, пустое во время выполнения отчета, сохраняемое при последнем проходе отчета.

По умолчанию DTOT({})

runStatusText Property

Показывает сообщение пользователя, показываемое в течение выполнения отчета .

Default "Creating output..."

Замечание:: Смотрите REPORTLISTENERS_LOCS.H, который показывает локализуемое значение, для которого это свойство установлено в методе Init класса.

secondsText Property

Обеспечивает включение текстового сообщения, описывающего временную маску по умолчанию в сообщении обратной связи пользователя во время выполнения отчета, если IncludeSeconds = .T.

Default SPACE(1) + "secs "

Замечание: Смотрите REPORTLISTENERS_LOCS.H, который показывает локализуемое значение, для которого это свойство установлено в методе Init класса.

thermCaption Property

Содержит вычисляемое выражение для использования в пользовательском сообщении обратной связи, показываемом при выполнении отчета. Если это выражение включает "cMessage",содержимое аргумента, предусмотренного в DoStatus, будет включено в результат оценки. Это значение находится поверх индикатора выполнения UpdateListener.

Default [cMessage+ " "+ TRANSFORM(INT(THIS.PercentDone*100)) + "%" + IIF(NOT THIS.IncludeSeconds, "" , " "+TRANSFORM(IIF(THIS.IsRunning,DATETIME(), THIS.ReportStopRunDateTime)-THIS.ReportStartRunDateTime)+" " + THIS.SecondsText)]

Замечание:: Если вы регулируете это значение, UpdateListener пытается вычислить результат, включая "глупое" значение для cMessage, если необходимо. Если это не поможет вычислить результат за время, установленное значением свойства, то будет сохранено прешшествующее значение.

thermFormCaption Property

Содержит значение, используемое при установке заголовка пользовательской формы обратной связи.

Default ""

Замечание:: UpdateListener вычисляет это значение при старте выполнения каждого отчета. Если вы установили его в непустое значение, UpdateListener не регулирует его установку.

Если вы не добавляете значение, UpdateListener устанавливает значение, используя свойство ReportListener.PrintJobName. Если свойство PrintJobName является пустым, взамен используется ReportListener.CommandClauses.File, имя исполняемого файла отчета. Результирующее значение добавляется к локализуемой строке, по умолчанию "Press Esc to cancel... ", чтобы индицировать пользователю возможность остановить или прекратить отчет нажатием клавиши.

thermFormHeight Property

Содержит высоту пользовательской формы обратной связи в пикселах.

Default 40

thermFormWidth Property

Содержит ширину формы обратной связи пользователя в пикселах.

Default 356

thermMargin Property

Содержит величину (в пикселах), используемую, чтобы определять разницу между размером пользовательского окна обратной связи и "термометром", который оно отображает.

Default 5

Пример

Следующий пример выключает встроенную по умолчанию обратную связь для HTMLListener и подключает вместе с UpdateListener для той же обратной связи пользователя для печати или предварительного просмотра по умолчанию.

Код устанавливает заголовок формы обратной связи и инструкции UpdateListener не включать секунды в пользовательскую обратную связь для этого отчета. Затем кратко показывается форма обратной связи, так что вы можете проверить результаты этих изменений, изпользуя UpdateListener.initStatusText для подачи сообщения.

Пример кода выполняет отчет, показывая форму обратной связи UpdateListener-а, чтобы информировать пользователя о ходе генерации HTML-файла.

После выполнения отчета HTML-файл переносится в окно Visual FoxPro Для быстрого контроля. Показывается хронометраж времени выполнения отчета, используя методы ReportListener.DoMessage и HtmlListener.AppName из расширенной версии _ReportListener's, чтобы обеспечить заголовок для окна сообщений.

 Скопировать код
LOCAL oUpdate, oHtml
* создаем  ReportListeners:
oHtml = NEWOBJECT("HtmlListener","_REPORTLISTENER.VCX")
oUpdate = NEWOBJECT("UpdateListener","_REPORTLISTENER.VCX")

* настраиваем:

oHtml.QuietMode = .T.

oUpdate.ThermFormCaption = "My Listener Demo"
oUpdate.IncludeSeconds = .F.
oUpdate.DoStatus(oUpdate.initStatusText)
WAIT WINDOW TIMEOUT 3 "Notice the window title... "

* делаем одного "наследником" другого:
oHtml.successor = oUpdate 

* выполняем отчет:
REPORT FORM ? OBJECT oHtml

* Смотрим результаты:
MODIFY FILE (oHtml.TargetFileName) NOWAIT
oUpdate.DoMessage("Total Report Time: "  + ;
                  TRANSFORM(oUpdate.reportStopRunDatetime - ;
                            oUpdate.reportStartRunDatetime) + ;
                  Update.secondsText,0,oHTML.appName )

Смотрите также