Предоставляет доступ приемника отчетов (ReportListener ) к объекту GDIPlus Graphics для оперирования выводом.
ReportListener.GDIPlusGraphics |
Возвращаемое значение
Тип данных - целое.
По умолчанию - 0. Данное свойство только для чтения (readonly).
Замечания
Употребляется в: Объект ReportListener.
Данное свойство дает возможность подклассам ReportListener добавлять свой собственный вывод в выходной поток, посредством доспупа к дескриптору потока базавого класса ReportListener.
![]() |
---|
Когда код, написанный на Visual FoxPro, обращается к этому дескриптору, вы должно объявить (DECLARE) и вызывать функции из одного и того же файла GDIPLUS.DLL, который используется собственным кодом Visual FoxPro. Чтобы это обеспечить, пользуйтесь синтаксисом IN GDIPLUS.DLL без явного указания пути в команде DECLARE DLL. |
Visual FoxPro поставляется с Фундаментальными Классами (Foundation Classes), облегчающими работу с GDI+ API. Для дальнейшей информации, читайте Фундаментальные Классы GDI Plus API Окружения.
Пример
Данный пример разворачивает все тексты в верхнем колотитуле страницы на заданный угол, аналогично установке угла поворота текста в Exsel spreadsheet. Такой подход удобен, когда в вашем отчете заголовки колонок занимают больше места, чем сама информация в этих колонках.
![]() | |
---|---|
LOCAL oListener oListener = CREATEOBJECT("rotateText") oListener.ListenerType = 1 REPORT FORM ? OBJECT oListener #define FRX_OBJCOD_PAGEHEADER 1 DEFINE CLASS rotateText AS ReportListener IsInPageHeader = .F. PROCEDURE Init() DECLARE integer GdipRotateWorldTransform In GDIPlus.Dll ; integer graphics,single angle,integer enumMatrixOrder_order DECLARE integer GdipTranslateWorldTransform In GDIPlus.Dll ; integer graphics,single dx,single dy,; integer enumMatrixOrder_order DECLARE integer GdipSaveGraphics IN GDIPlus.DLL ; integer graphics, integer @xx DECLARE integer GdipRestoreGraphics IN GDIPlus.DLL ; integer graphics, integer xx ENDPROC PROCEDURE BeforeBand(nBandObjCode, nFRXRecNo) DODEFAULT(nBandObjCode, nFRXRecNo) IF (nBandObjCode = FRX_OBJCOD_PAGEHEADER) THIS.IsInPageHeader = .T. ENDIF ENDPROC PROCEDURE AfterBand(nBandObjCode, nFRXRecNo) IF (nBandObjCode = FRX_OBJCOD_PAGEHEADER) THIS.IsInPageHeader = .F. ENDIF DODEFAULT(nBandObjCode, nFRXRecNo) ENDPROC PROCEDURE Render(nFRXRecNo, nLeft, nTop, nWidth, nHeight,; nObjectContinuationType, cContentsToBeRendered, GDIPlusImage) LOCAL xx,x,y, z xx = 0 IF THIS.IsInPageHeader * Взять нужные координаты x = nLeft y = nTop * сохранить текущее состояние дескриптора графики z = GdipSaveGraphics(this.GDIPlusGraphics, @xx) * теперь поместим точку отсчета 0,0 в заданное место, * чтобы, когда мы вращали текст, то это бы происходило вокруг * заданной точки z = GdipTranslateWorldTransform(this.GDIPlusGraphics,x,y,0) * здесь следует проверить z -- должно быть 0, если не произошли ошибки * теперь изменим угол поворота текста z = GdipRotateWorldTransform ( this.GDIPlusGraphics,-20,0) * следует проверить z опять также * восстановить точку отчета 0,0 z = GdipTranslateWorldTransform(this.GDIPlusGraphics,-x,-y, 0) * следует проверить z опять также ENDIF * явный вызов родительского кода, * когда мы для него готовы DODEFAULT(nFRXRecNo, nLeft, nTop, nWidth, nHeight, ; nObjectContinuationType, cContentsToBeRendered, ; GDIPlusImage) * восстановить состаяние дескриптора графики IF THIS.IsInPageHeader GdipRestoreGraphics(this.GDIPlusGraphics, xx) ENDIF * здесь подавить выполнение родительского кода NODEFAULT ENDPROC ENDDEFINE |