Обеспечивает доступ к текущей странице или полному диапазону страниц для выполнения отчета, в зависимости от значения свойства ListenerType.
oReportListener.OutputPage(; |
Параметры
- nPageNo
- В постраничном режиме (свойство ListenerType установлено в 0 или 2), ReportListener использует этот параметр, чтобы послать Вам номер очередной страницы, подготавливаемой для вывода. Вы можете направить вывод очередной страницы на другое устройство. В режиме "все страницы сразу" (свойство ListenerType установлено в 1 или 3), Вы используете этот параметр, чтобы послать ReportListener число страницы, которое Вы желаете обработать (rendered). Подробнее о значениях свойства ListenerType, см. ListenerType Свойство.
- eDevice
- Указывает дескриптор, ссылку, или имя файла , куда вы хотите направить вывод. Когда значение свойства ListenerType - 0, ReportListener использует этот параметр, чтобы послать GDI+ графический дескриптор на текущий принтер. Когда свойство ListenerType - 2, вывод фактически не идет в принтер, так что ReportListener посылает Вам значение 0. В режиме "все страницы сразу" (ListenerType 1 или 3), Вы используете этот параметр, чтобы указать ReportListener один из вариантов:
- Дескриптор GDI на принтер.
- GDI+ Графический дескриптор на другое устройство вывода.
- Ссылка на объект, произошедшая из элемента управления Shape или из Контейнера baseclass.
- Имя файла.
- Дескриптор GDI на принтер.
- nDeviceType
- Представляет тип устройства, для которого будет обработан (rendered) вывод.
Значение Тип устройства -1
Нет устройства.
ReportListener посылает это значение, когда он инициирует OutputPage при ListenerType=2.
0
hDC (GDI дескриптор).
Вы можете послать дескриптор GDI в ReportListener для вывода на другой принтер.
1
hGraphics (GDI+ графический дескриптор).
ReportListener посылает это значение, когда он инициирует OutputPage при ListenerType = 0. Вы можете послать его в ReportListener, чтобы направить вывод на другой GDI+ контекст, например, окно.
2
oFoxControl.
Используйте это значение, чтобы ReportListener отобразил предварительный просмотр, используя элемент управления Shape или элемент управления контейнер.
100
Это значение определяет имя EMF-файла для сохранения образа.
101
Это значение определяет имя TIFF-файла для сохранения образа.
102
Это значение определяет имя JPEG-файла для сохранения образа.
103
Это значение определяет имя GIF-файла для сохранения образа.
104
Это значение определяет имя PNG-файла для сохранения образа.
105
Это значение определяет имя BMP-файла для сохранения образа.
201
Это значение добавляет страницу в предварительно-созданный TIFF, создавая многостраничный файл TIFF.
Совет:
ReportListener способен выполнить некоторую дополнительную оптимизацию этого формата файла, когда Вы используете это значение прежде, чем отчет закончен. Для ReportListener с ListenerType 0 или 2, OutputPage событие случается в это время. Это проиллюстрировано в примере, приведенном ниже. Для ReportListener с ListenerType 1 или 3, Вы можете вызвать OutputPage при обработке события AfterReport чтобы использовать оптимизацию.
- [nleft, nTop, nWidth, nHeight,[nClipLeft,nClipTop, nClipWidth, nClipHeight]]
- Эти дополнительные параметры не применимы, когда nDeviceType - 2 (a Visual FoxPro control surface). Первый набор четырех координат (nleft, nTop, nWidth, nHeight) определяет координаты в еденицах 1/960 дюйма (960 точек на дюйм), прямоугольника на текущем устройстве, в котором будет размещён выводимый элемент. Второй набор четырех координат (nClipLeft, nClipTop, nClipWidth, nClipHeight) позволяет при выводе на предварительный просмотр указать, что только часть страницы должна быть обновлена.
Возвращаемое значение
Нет.
Замечания
Применимо к: ReportListener Object.
OutputPage метод необычен тем что, в зависимости от значения ListenerType , ReportListener или вызывает этот метод, чтобы сообщить Вам, что страница готова или ожидает, что Вы сами его вызовите, запросив страницы, которые Вы хотите.
Понимание двух режимов обработки OutputPage
В первом режиме обработки, ReportListener действует в стиле, применимом для принтеров и других устройства вывода, которые обрабатывают одну страницу одновременно. В случае необходимости, эти устройства размещают страницы в спулер или очередь, пока они не готовы. Этот тип обработки страницы только вперед; Вы не можете запросить страницу, после того, как ReportListener начал обрабатывать следующие после неё страницы.
Во втором режиме, ReportListener готовит все страницы сразу, фактически создавая очередь всех страниц, пока устройство не готово принять их. Вы не можете запрашивать отдельные страниц, пока все страницы не подготовлены. Однако, этот тип обработки размещает страницы в кэш, допускающий прокрутку, что необходимо при предварительном просмотре; как только страницы готовы, Вы можете запросить их в любом порядке, и можете использовать их длительное время.
Обработка ошибок параметров OutputPage
У OutputPage много параметров, и некоторые параметры имеют неоднозначное толкование. По этой причине интерпретация ошибок может быть затруднена, если Вы задаёте параметры неправильно.
Далее перечислены сообщения об ошибках, которые генерирует ReportListener при передаче некорректных параметров в OutputPage.
Сообщение об ошибке и номер | Условия, вызывающие эту ошибку |
---|---|
Must specify additional parameters (Error 94). Должены быть определены дополнительные параметры |
Возникает, если Вы не включаете все три обязательных параметра (nPageNo, eDevice, nDeviceType). |
Function argument value, type, or count is invalid (Error 11). Некорректное значение или тип аргумента. |
Возникает, если не распознано значение nDeviceType. |
DataType property for field 'eDevice' is invalid (Error 1544). Некорректное свойство DataType для поля 'eDevice'. |
Возникает, если тип данных аргумента eDevice не соответствует требованиям, определяемым nDeviceType Например, это может случится если nDeviceType - 0 или 1, а eDevice - недопустимый дескриптор, или если nDeviceType - один из типов имени файла, но eDevice - не строка, представляющая имя файла. |
Error writing to file 'filename' (Error 1105) Ошибка, записи в файл. |
Возникает, если nDeviceType - один из типов имени файла и eDevice корректен, но файл не может быть создан. Например, пользователь не имеет разрешения создавать файл в указанном каталоге. |
Output page 'pageno' is not available (Error 2194). Страница вывода не доступна. |
Возникает, если nPageNo не соответствует текущей обрабатываемой странице, или если значение ListenerType не установлено в одно из значений (0, 1, 2, или 3), когда ReportListener обрабатывает страницы. |
Для получения дополнительной информации об ошибках Visual FoxPro см. Сообщения об ошибках по номерам. Для получения дополнительной информации об ошибки выполнения отчета см. Ошибки при выполнении отчета.
![]() |
---|
В дополнение к вышеперечисленным сообщениям об ошибках, возникающих при вызове OutputPage с неправильными параметрами, надо знать что, OutputPage нуждается в ресурсах, доступных отчёту, даже когда Вы вызываете его после того, как выполненное отчёта заканчивается. Например, если графический файл, используемый в отчёте, встроен в ваше приложение, вызов OutputPage из PreviewContainer нуждается в доступе к этому графическому файлу. Хотя сообщение об ошибкае не возникает, ваш отчёт не будет завершен, если Вы разгружаете приложение, из которого вызвана REPORT FORM или LABEL. |
Примеры
Пример 1: OutputPage в постраничном режиме, вывод в графичекий файл
Этот код создает многостраничный-TIFF файл при выполнении отчета. Сначала OutputPage вызывается с параметром nDeviceType=101 и создаётся TIFF-файл. При последующих вызовах nDeviceType=102, и создаваемые страницы добавляются к многостраничному TIFF-документу.ReportListener создаётся на основе класса, в котором ListenerType=2, и код, определенный в классе вызывает OutputPage для подготовки каждой страницы.
![]() |
---|
Встроенная способность класса ReportListener выводить изображения страниц в виде различных типов файлов ограничена некоторыми настройками по умолчанию для каждого типа файла. В случае TIFF, ReportListener формирует сжатые TIFF. Однако, Вы не ограничены встроенными настройками. Вы можете передать в ReportListener GDI+ графический дескриптор и, в OutputPage методе обработать страницу для этого устройства. Вы можете тогда сохранить результат в виде графического файла с другими настройками. Visual FoxPro снабжен библиотекой классов, помогающей Вам выполнять GDI+ ориентированные задачи. Для получения дополнительной информации, см. фундаментальные классы GDI Plus API адаптер. |
Код
![]() | |
---|---|
#define OutputNothing -1 |
Пример 2: испоьзование OutputPage для постраничного отображения на экран
Этот пример демонстрирует отображение вывода на дисплей для обратной совместимости, когда ключевое слово NOCONSOLE не используется в команде REPORT FORM. Используется способность OutputPage метода записывать в GDI+ графический дескриптор. Если в REPORT FORM определена NOCONSOLE, объект ReportListener не отображает вывод на дисплей.
По умолчанию ReportListener использует значение ListenerType 2, поэтому OutputPage готовит каждую страницу вывода, но не имеет собственного вывода результата. Проверяется есть ли ключево слово NOCONSOLE анализируя свойство CommandClauses, и определяется куда будет направлен вывод. Если пользователь направляет вывод на принтер, в файл, или предварительный просмотр, этот класс корректирует его поведение в соответствовии с предыдущим версиям Visual FoxPro.
Код
![]() | |
---|---|
#DEFINE OUTPUTDEVICETYPE_GDIPLUS 1 |
Example 3: OutputPage in all-pages-at-once mode
Этот пример использует значение ListenerType 3, так что собственно ReportListene класс не вызывает OutputPage для подготовки страниц. Вместо этого этот класс вызывает OutputPage после того, как выполнение отчета заканчивается, и отображает вывод в объекте preview, включённому в форму. Как видно из примера, изменяя измерения объекта preview, Вы можете изменить масштаб изображения, используя любой алгоритм или ограничения, которые Вы предпочитаете. Передавая ссылку на этот объект в метод OutputPage , Вы сообщаете внутреннему коду метода, какой размер Вы хотите установить для предварительного просмотра страницы. Собственно OutputPage обеспечивает масштабирование вывода на предварительный просмотр.
![]() |
---|
Обратите внимание, что внутренний код DoOutputPage этого класса для метода OutputPage выясняет, что передан номер существующей страницы перед вызовом внутреннего кода OutputPage, во избежании ошибок. |
Код
![]() | |
---|---|
#DEFINE BASEPAGEHEIGHT 550 |
См. также
Ссылки
ReportListener объектCommandClauses свойство
ListenerType свойство
LoadReport событие
OutputPageCount свойство
PageNo свойство
Shape элемент управления
Container объект
API Контейнер Предварительного Просмотра Отчетов
Понятия
Использование GDI+ в отчётахДругие источники
Методы (Visual FoxPro)Справочник по языку (Visual FoxPro)