Происходит до выполненного отчета, перед событием BeforeReport. Обеспечивает доступ к опциям  команды отчёта.

PROCEDURE Object.LoadReport

Параметры

Нет.

Замечания

Применимо к: ReportListener объект.

LoadReport и UnloadReport - два фреймовых(framing) события отчета или этикетки; с точки зрения системы отчётов, выполненение отчета еще не началось, когда вызывается LoadReport, и уже закончилось, когда вызывается UnloadReport.

Следовательно, эти события позволяют Вам выполнить установку и сброс. Например, в LoadReport, Вы можете изменить содержание таблицы отчета или этикетки (frx или lbx), потому что движок отчета и ReportListener не читали ещё содержание таблицы. Вывод на печать еще не начался, если команда REPORT FORM не продолжает задание по выводу на печать, начатое выданной рынее командой REPORT FORM, которая использовала ключевое слово NOPAGEEJECT, так что Вы можете изменить текущую установку принтера.

Примечание:
 Для информации о порядке событий при выполненении отчета, см. Понимание объектно-ассистированого выполнения отчета в Visual FoxPro.

Если Вы пишете код для события LoadReport, который возвращает значение .F., отчет не будет выполнен. Спулер печати не будет открыт, предварительный просмотр не будет выполнен, дальнейшие события в Listener не будут вызываться, и так далее. Это подобно событию Load для формы и набора форм; если Load возвращает .F., форма не инициализируется.

Опции, с которыми Вы вызвали REPORT FORM или LABEL FORM, доступны вам для использования в LoadReport; однако, некоторые значения еще не рассчитаны в это время. Для получения дополнительной информации, см.  CommandClauses свойство.

Пример

В следующем примере определён класс, файл отчета (frx) указанный в команде REPORT FORM подменяется временным файлом при обработке события LoadReport. При обработке события UnloadReport происходит обратная замена.

  Копировать код
DEFINE CLASS rlswap AS ReportListener

ListenerType = 1 && для вывода результата используется предварительный просмотр
realFRX = ""
useFRX = ""
tempFRX = FORCEPATH(SYS(2015),SYS(2023))

PROCEDURE LoadReport
THIS.realFRX = THIS.CommandClauses.FILE
THIS.useFRX = GETFILE("frx")
IF EMPTY(THIS.useFRX)
RETURN .F.
ENDIF
SET DATASESSION TO THIS.FRXDataSession
SET SAFETY OFF && it's scoped to session anyway
THIS.ClearFRX(THIS.tempFRX)
RENAME (FORCEEXT(THIS.realFRX,"frx")) TO ;
FORCEEXT(THIS.tempFRX,"frx")
RENAME (FORCEEXT(THIS.realFRX,"frt")) TO ;
FORCEEXT(THIS.tempFRX,"frt")
COPY FILE (FORCEEXT(THIS.useFRX,"frx")) TO ;
FORCEEXT(THIS.realFRX,"frx")
COPY FILE (FORCEEXT(THIS.useFRX,"frt")) TO ;
FORCEEXT(THIS.realFRX,"frt")
ENDPROC

PROTECTED PROCEDURE clearFRX(tFRX)
IF FILE(FORCEEXT(tFRX,"frx"))
ERASE FORCEEXT(tFRX,"frx")) NORECYCLE
ENDIF
IF FILE(FORCEEXT(tFRX,"frt"))
ERASE FORCEEXT(tFRX,"frt")) NORECYCLE
ENDIF
ENDPROC

PROCEDURE UnloadReport
SET DATASESSION TO THIS.FRXDataSession
USE IN FRX
THIS.clearFRX(THIS.realFRX)
RENAME (FORCEEXT(THIS.tempFRX,"frx")) TO ;
FORCEEXT(THIS.realFRX,"frx")
RENAME (FORCEEXT(THIS.tempFRX,"frt")) TO ;
FORCEEXT(THIS.realFRX,"frt")
ENDPROC

ENDDEFINE

См. также