Данный класс предоставляет методы для трансляции и обработки различных величин в файлах этикеток (lbx) и отчетов (frx).

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

Default Catalog

Visual FoxPro Catalog\Foundation Classes\Output\Output Helper Classes

Class

frxCursor

Base Class

Custom

Class Library

_FrxCursor.vcx

Parent Class

Custom

Замечания

Этот класс раскрывает алгоритмы, используемые ReportOutput.APP, ReportBuilder.APP, и ReportPreview.APP для интерпретации различных значений печати и значений в таблицах Report (frx) и Label (lbx).

Главным образом он полезен разработчикам, расширяющим функциональность Visual FoxPro при работе с отчетами. Для получения более подробной информации обратитесь к статье Расширение функциональности отчета в Visual FoxPro.

FrxCursor поможет вам обрабатывать многие детали файлов формата Report и Labe, которые в чем-то неясны и, во многих случаях, очень сложны. В статье Понимание и расширение структуры отчетов описываются важные подробности о формате этого файла.

Важное замечание
Многие методы этого класса используют единицу измерения известную как FRU. FRU представляет собой единицу измерения, используемую FoxPro в отчетах и определенную в 1/10000 дюйма. Эта единица измерения является внутренней единицей, используемой дизайнером отчета Visual FoxPro для хранения позиций и мерных величин в раскладках. Методы класса FrxCursor помогут вам конвертировать FRU в единицы измерения, которые вам легче использовать в других средах.

Соглашение по наименованиям - замечание переводчика

В отчетах, создаваемых в VFP, используется несколько видов областей, ограниченных в Дизайнере отчетов разделительными элементами, выполненными в виде смещаемых по вертикали планок. Каждая планка располагается внизу своей области данных и носит название соответствующее этой области. Как видно из приведенного слева рисунка, это области:

"Title" - титульный заголовок,
"Page Header" - заголовок страницы,
"Group Header" - заголовок группы,
"Detail" - область выводимых данных,
"Group Footer" - подножие группы,
"Page Footer" - подножие страницы и
"Summary" - область вывода сводных, итоговых данных.

Далее по тексту, там, где в описании методов будет фигурировать "область" (band), это следует понимать именно как область размещения информации, будь-то какие-либо ярлыки/метки ("labels"), собственно выводимые в отчет данные или вычисляемые величины.

Свойства, события, методы Описание

binStringToInt метод

Возвращает численный эквивалент бинарных данных, зашифрованных как строка байтов.

Синтаксис: binStringToInt(cBytes)

Возвращает: целочисленное (integer)

Аргументы:

cBytes представляет строку байтов, для которой метод вернет численный эквивалент. Например:

? oFrxCursor.BinStringToInt("ABC")

* displays 4407873

Пример того, как вызывается этот метод может быть найдет в статье Флажки защиты отчета (Report Protection Flags).

binToInt метод

Конвертирует строку, состоящую из единиц и нулей в целочисленное (integer) значение.

Синтаксис: binToInt(cString)

Возвращает: целочисленное (integer)

Аргументы:

cString представляет строку, состоящую из 1 и 0, для которой метод вернет целочисленный эквивалент. Например:

  Скопировать код
? oFrxCursor.BinToInt(;
   "00000000000000000000000001111011")
* отобразит 123

charsetToLocale метод

Конвертирует данное значение символьного набора шрифта (fontcharset) в candidate locale Id для использования в функции STRCONV(). Параметры: nCharSet

Синтаксис: charsetToLocale(nCharSet)

Возвращает: целочисленное (integer)

Аргументы:

nCharSet представляет значение символьного набора шрифта (fontcharset), которое должно быть конвертировано.

createBandCursor метод

Создает курсор с псевдоименем (алиасом) из курсора FRX, содержащий полезную информацию об областях (bands) в раскладке отчета.

Синтаксис: createBandCursor([cFrxAlias]

Возвращает: логическую величину

Аргументы:

cFrxalias содержит псевдоимя (алиас) открытой таблицы отчета (frx), из которой будут выданы данные для курсора "bands". Если аргумент опущен, метод подразумевает в качестве псевдоимени (алиаса) значение "FRX".

createCalcResetOnCursor метод

Создает курсор (псевдоимя (алиас) "reset_on"), содержащий записи информации для каждой опции в комбобоксе "Сброс расчета" Дизайнера отчета (Report Designer's Calculation Reset). Посмотрите статью Calculate Tab, Report Control Properties Dialog Box (Report Builder) для подробной информации о возможных значениях.

Синтаксис: createCalcResetOnCursor( )

Возвращает: logical

Аргументы: none.

createDefaultPrintEnvCursor метод

Создает курсор с единственной записью, точно такой же структуры, как и FRX, с данными о принтерном окружении, загруженными в поля EXPR, TAG, и TAG2.

Синтаксис: createDefaultPrintEnvCursor( [cFrxAlias

[, cDestAlias ]])

Возвращает: логическую величину

Аргументы:

cFrxAlias содержит псевдоимя (алиас) открытой таблицы раскладки отчета (frx), из которой будет извлечена структура.

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

Псевдоименами (алиасами), используемыми по умолчанию, являются "FRX" и "defPrnEnv."

Замечание:
Структура источника курсора FRX может иметь поля custom, наряду со стандартной структурой таблицы отчета; эти поля будут продублированы в целевой структуре (defPrnEnv). Посмотрите статью Understanding and Extending Report Structure для получения подробной информации.

createGroupCursor метод

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

Синтаксис: createGroupCursor( [cFrxAlias])

Возвращает:логическую величину

Аргументы:

cFrxAlias содержит псевдоимя (алиас) открытой таблицы отчета (frx), из которой поставляется структура.

createObjectCursor метод

Создает курсор с псевдоименем (алиасом) "objects" на базе курсора FRX, содержащий полезную информацию о раскладке объектов в отчете. Вызывает, при необходимости, метод createBandCursor.

Синтаксис: createObjectCursor( [cFrxAlias[,cDestAlias [,iOption[,lRuntime]]]])

Возвращает:логическую величину

Аргументы:

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

cDestAlias определяет псевдоимя (алиас) курсора, который будет создан. По-умолчанию - "objects".

iOption может иметь следующие возможные значения:

iOption = 0 Значение по-умолчанию, если аргумент не задан. Метод включает все объекты в frx, игнорируя сгруппированные.

iOption = 1 Включает в курсор только выбранные /CURPOS=.T. записи.

iOption = 2 Включает все объекты, показывая сгруппированые, как одиночную запись группы.

iOption = 3 Содержит разбивку сгруппированных записей. Отметьте, что некоторые записи, включенные в группу, могут быть маркированы как удаленные - deleted(). Вы можете использовать команду SET DELETED ON для пропуска этих записей.

lRuntime определяет, что курсор объекта должен использовать run-time значения отчета для каждой начальной и конечной областей, в которых он размещается. Значение, по-умолчанию равно .F., которое определяет, which specifies that the band location values are correct as determined by the Report Designer layout engine. "Run-time"-ский движок отчета использует различные алгоритмы для определения состояния - в какой области элемент раскладки начинается и заканчивается.

createVariableCursor метод

Создает курсор с псевдоименем (алиасом) "vars" из курсора FRX, содержащий полезную информацию о переменных, определенных в отчете.

Синтаксис: createVariableCursor( [cFrxAlias])

Возвращает: логическую величину

Аргументы: cFrxAlias содержит псевдоимя (алиас) открытой таблицы отчета (frx), из которой поставляется структура.

fruToPixels метод

Возвращает размер в пикселях для данного числа FRU.

Синтаксис: fruToPixels(iValue)

Возвращает: число (число пикселей)

Аргументы:

iValue представляет число единиц FRU, которое должно быть конвертировано в пиксели.

getBandFor метод

Возвращает объект, представляющий начало и конец области отчета (band) для данного объекта в записи. Так как объект может объединять несколько областей раскладки отчета, этот метод предоставляет, как начало, так и конец области (bands), в которой закреплен объект. Он использует позицию вертикального смещения объекта раскладки, для определения корректной области отчета (bands).

Синтаксис: getBandFor(cUniqueID [,lStart])

Возвращает: объект области (bands) (объект представляет данные в относящейся к ним области FRX)

Аргументы:

cUniqueID представляет собой значение UniqueID для объекта в FRX, для которого мы желаем получить информацию об относящейся к нему области отчета lStart определяет - что из двух мы желаем получить - начало или конец области (band).

getFruTextHeight метод

Возвращает высоту текстовой строки, измеренную в FRU, отображаемую с использованием указанных аттрибутов шрифта.

Синтаксис: getFruTextHeight(cText,cTypeFace,iSize[, cStyle])

Возвращает:   целочисленное (integer) значение, выраженное в единицах FRU.

Аргументы:

cText представляет собой строку, которую мы желаем измерить.

cTypeFace - имя шрифта.

iSize размер шрифта в точках (point).

cStyle представляет собой стили, которые мы желаем применить к данной строке, используя те же самые значения, которые мы могли бы послать функции GETFONT( ). Для получения подробной информации смотри статью справки AFONT( ) Функция.

getFruTextWidth метод

Возвращает ширину текстовой строки, измеренную в FRU, отображаемую с использованием указанных аттрибутов шрифта.

Синтаксис: getFruTextWidth(cText,cTypeFace,iSize[, cStyle])

Возвращает:  целочисленное (integer) значение в единицах FRU.

Аргументы:

cText представляет собой строку, которую мы желаем измерить.

cTypeFace имя шрифта.

iSize размер шрифта в точках (point).

cStyleпредставляет собой стили, которые мы желаем применить к данной строке, используя те же самые значения, которые мы могли бы послать функции GETFONT( ). Для получения подробной информации смотри статью справки AFONT( ) Функция

getFrxTimeStamp метод

Возвращает временной шамп для данных даты/времени, сформированный в соответствии со стандартами, используемыми в системных таблицах Visual FoxPro (frx и lbx файлы, для отчетов и меток).

Синтаксис: getFrxTimeStamp([vDateTime]) Возвращает:  целочисленное (integer) значение.

Аргументы:

vDateTime представляет собой необязательный аргумента либо типа Date, либо типа DateTime. Если вы опустите этот аргумент, метод будет использовать текущее значение, определяемое значением, возвращаемым функциейDATETIME( ).

getMetadataDomDoc метод

Возвращает объекта документа MSXml.DomDocument, содержащий XML report memberdata для текущей записи в FRX. Если поле STYLE для текущей записи ничего не содержит, то этот метод возвратит пустой шаблон документа соответствующей схемы XML.

Синтаксис: getMetadataDomDoc( [cFrxAlias])

Возвращает: объект MSXml.DomDocument, или NULL, если псевдоимя (алиас) не подтверждено функцией USED().

Аргументы:

cFrxAlias содержит псевдоимя (алиас) открытой таблицы раскладки отчета (frx), из которой поставляется структура.

getObjectsInBand метод

Возвращает коллекцию значений UNIQUEID для каждого объекта, находящегося внутри указанной области (band).

Синтаксис: getObjectsInBand( cBandID [,lRecno])

Возвращает: Объект типа Collection, хранящий либо набор значений UNIQUEID для выбранных объектов раскладки, либо набор значений, поставляемый функцией RECNO() для них же.

Аргументы:

cFrxAlias содержит псевдоимя (алиас) открытой таблицы раскладки отчета (frx), из которой поставляется структура.

lRecno указывает, какой тип значений вы желаете иметь в объекте класса Collection. Если вы посылаете в качестве второго параметра значение .T., то в коллекции будут содержаться номера записей FRX, а не значения полей UNIQUEID.

getReportAttribute метод

Возвращает затребованный аттрибут заголовка отчета.

Синтаксис: getReportAttribute( cAttributeType, [,lAlternate])

Возвращает: a Аттрибут отчета, основанный на аргументе, указанном в вызове метода.

Аргументы:

cAttributeType указывает тип значения аттрибута отчета, который вы желаете получить.

Поддерживаются следующие значения cAttributeType (регистро-нечувствительные - "case-insensitive"):

"UNITS" Возвращает целочисленное (integer) значение, показывающее единицы так, как они хранятся в поле Frx.RULER.

Замечание:
Это значение аргумента может также вернуть ассоциированную строку, представляющую единицы, если вы включите в вызов аргумент lAlternate со значением, равным .T.. Например, приведенный ниже вызов метода, вернет в результате значение "Inches" - (дюймы): oFrxCursor.getReportAttribute("UNITS",1)

"MULTICOLUMN" Возвращает логическую величину.

"COLUMNCOUNT" Возвращает целочисленное (integer) значение.

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

getSelectedObjectCount метод

Возвращает число текущих выбранных объектов (объекты, для которых значение поля CURPOS установлено в .T.) в курсоре FRX.

Синтаксис: getSelectedObjectCount( )

Возвращает: целочисленное (integer).

Аргументы: none.

getTargetTypeText метод

Возвращает описание типа объекта FRX, данный тип и значение кода, хранящихся в полях OBJTYPE и OBJCODE курсора FRX.

Синтаксис: getTargetTypeText(iType[,iCode])

Возвращает: String.

Аргументы:

iType содержит значение OBJTYPE объекта. Если вы опустите этот аргумент, или укажите значение, которое не значится среди принятых величин для OBJTYPE, то метод вернет строку Unknown Target type.

iCode содержит вспомогательное значение OBJCODE, используемое для записей FRX с более чем одним типом записей использующих тот же самый OBJTYPE (записи первичной раскладки областей).

getTimeStampString метод

Конвертирует временной штамп Visual FoxPro в читаемую строку.

Синтаксис: getTimeStampString(iDateTimeStamp)

Возвращает: строковое выражение.

Аргументы: iDateTimeStamp представляет собой целочисленное (integer) значение в формате, используемом Visual FoxPro для хранения временных штампов в системных файлах (frx и lbx файлах, для отчетов и меток). Например:

  Скопировать код
? oFrxCursor.GetTimeStampString(819103384)
* displays: 06/18/04 04:52:48 PM

Совет  Вы можете использовать этот метод для контроля значение штампов даты/времени в библиотеках классов Visual FoxPro (vcx файлах).

getUnitValueFromFru метод

Возвращает значение данной единицы для данного значения, измеряемого в FRU, в зависимости от самой единицы.

Синтаксис: getUnitValueFromFru(nFruValue, iUnits)

Возвращает: число.

Аргументы:

nFruValue представляет собой число единиц FRU, которое может иметь десятичные части.

iUnits представляет собой целочисленное (integer) значение, указывающее тип единицы, для которой вы желаете получить конвертированное значение. Это значение определяется целочисленным значением, используемым в таблицах отчетов и этикеток - (frx) или (lbx) - для указания единиц измерительных полосок дизайнера. Смотри статью Понимание и расширение структуры отчета для получения подробной информации.

hasBand метод

Возвращает .T., если отчет содержит область (band) указанного вами типа.

Синтаксис: hasBand(iObjCode)

Возвращает: логическую величину.

Аргументы:

iObjCode представляет собой целочисленное (integer) значение, определяющее тип вспомогательной области (band), чье наличие в раскладке вы желаете проверить.

Совет  Используйте этот метод для проверки наличия областей (bands), которые вовсе не обязательно могут присутствовать в каждом из отчетов. Например, с помощью этого метода вы можете проверить присутствие области (band) "Group band" или области (band) "Summary band".

hasDetailHeader метод

Возвращает .T., если запись указанной области (band) детализации (Detail band) имеет ассоциированную запись области (band) заголовка.

Синтаксис: hasDetailHeader(cDetailBandID)

Возвращает: логическую величину.

Аргументы:

cDetailBandID представляет собой строку, соответствующую значению поля Frx.UNIQUEID для исследуемой вами области (band) детализации (Detail band).

Совет   Обе области (bands): и Detail Header и Detail Footer являются необязательными. Но если в результате вызова метода вы получили .T. для области (band) детализации (Detail band), вы можете быть уверены, что как Detail Header, так и Detail Footer имеются в наличии, поскольку эти две области (bands) всегда парные.

hasProtectionFlag метод

Возвращает .T. если указанная бинарная величина имеет установленным соответствующий флажок.

Синтаксис: hasProtectionFlag(cBytes,iFlag)

Возвращает: логическую величину.

Аргументы:

cBytes представляет собой строку, оцениваемую этим методом, как серию байт.

iFlag представляет собой значение бита, представляющего тип защиты отчета, для которого вы проверяете отчет или объект раскладки.

insertBand метод

Вставляет область (band) указанного типа в текущую выбранную рабочую область. Этот метод подразумевает, что действительный курсор FRX уже выбран и что его указатель записи установлен в корректное, для операции вставки, место.

Синтаксис: insertBand(iObjCode)

Возвращает: логическую величину.

Аргументы:

iObjCode определяет тип области (band), которую вы желаете вставить в таблицу FRX.

insertDataEnvRecord метод

Вставляет запись для объекта data environment в курсор FRX. Этот метод подразумевает, что указатель записи установлен в соответствующую позицию.

Синтаксис: insertDataEnvRecord(cID,cName,cExpr,cCode)

Возвращает: логическую величину.

Аргументы:

cID представляет собой уникальное значение ID для колонки UniqueID новой записи.

cName - значение для колонки Name новой записи.

cExpr - список пар - "имя-значение", которые будут включены в колонку Expr новой записи.

cCode - текст программного кода метода, который будет включен в колонку Tag новой записи.

insertDetailBand метод

Вставляет Detail band в текущей выбранной рабочей области. Этот метод подразумевает, что действительный курсор FRX уже выбран и указатель записи установлен на соответствующую для вставки Detail band запись.

Синтаксис: insertDetailBand()

Возвращает: логическую величину.

Аргументы: не имеет.

insertDetailHeaderFooter метод

Вставляет области (bands) Detail Header и Detail Footer в курсор FRX в текущей выбранной рабочей области. Этот метод подразумевает, что действительный курсор FRX уже выбран и указатель записи установлен на запись Detail band, которая к этому моменту еще не имеет областей Detail Header и Detail Footer.

Синтаксис: insertDetailHeaderFooterBand()

Возвращает: логическую величину.

Аргументы: не имеет.

insertSummaryBand метод

Вставляет область Summary band в курсор FRX в текущей выбранной рабочей области. Этот метод подразумевает, что действительный курсор FRX уже выбран и что курсор FRX еще не имеет записи для Summary band.

Синтаксис: insertSummaryBand(lNewPage, lPageHeader, lPageFooter)

Возвращает: логическую величину.

Аргументы:

lNewPage определяет, должен ли Summary band начинать новую страницу.

Если Summary band начинает новую страницу, lPageHeader определяет должна ли страница Summary page иметь Page Header band, а lPageFooter определяет должна ли страница Summary page иметь Page Footer band.

insertTitleBand метод

Вставляет область Title band в курсор FRX в текущей выбранной рабочей области. Этот метод подразумевает, что действительный курсор FRX уже выбран и что FRX еще не имеет записи для Title band.

Синтаксис: insertTitleBand(lNewPage)

Возвращает: логическую величину.

Аргументы:

lNewPage определяет должна ли страница Summary начинать новую страницу.

intToBin метод

Конвертирует целочисленное (integer) выражение в бинарную строку, содержащую нули и единицы.

Синтаксис: intToBin(iInteger)

Возвращает: строковое выражение.

Аргументы:

iInteger (integer) содержит целочисленное (integer) выражение, для которого метод вернет строку, состояющую из 1 и 0. Например:

  Скопировать код
? oFrxCursor.IntToBin(123)
* displays 
* 00000000000000000000000001111011

intToBinString метод

Возвращает бинарную величину, зашифрованную как строку байт для указанного вами целочисленного значения.

Синтаксис: intToBinString(iInteger)

Возвращает: строку (cBytes).

Аргументы:

iInteger (integer) содержит целочисленное (integer) выражение, для которого метод вернет строку из 1 и 0. Например:

  Скопировать код
? oFrxCursor.IntToBinString(4407873)
* displays ABC

Пример вызова этого метода может быть найден в статьеФлажки защиты отчета (Report Protection Flags).

pixelsToFru метод

Возвращает значение в единицах FRU для данного числа пикселей.

Синтаксис: pixelsToFru(iValue)

Возвращает: число (число единиц FRU)

Аргументы:

iValue представляет собой целочисленное (integer) значение, обозначающее число пикселей, которое будет конвертировано в число единиц FRU.

popPrintEnv метод

Восстанавливает принтерное окружение (настройки) из ранее сохраненного курсора. Этот метод предполагает, что ранее сохраненный курсор выбран в текущей рабочей области.

Синтаксис: popPrintEnv()

Возвращает: логическую величину.

Аргументы: не имеет.

pushPrintEnvToCursor метод

Сохраняет текущее принтерное окружение (настройки) в курсор, который создается этим методом.

Синтаксис: pushPrintEnvToCursor(cSavedInAlias)

Возвращает: логическую величину.

Аргументы: cSavedInAlias содержит псевдоимя (алиас) курсора, который вы желаете создать и в котором вы желаете сохранить принтерное окружение (настройки).

screenDPI свойство

DPI для Дизайнера отчета. В VFP9 это значение жестко прописано равным 96, независимо от DPI реального монитора.

По-умолчанию: 96

setColumnCount метод

Добавляет или удаляет колонки (и записи заголовков/подножий колонок) в курсоре FRX. Это метод предполагает, что курсор FRX выбран в текущей рабочей области.

Синтаксис: setColumnCount(iColumns)

Возвращает: logical.

Аргументы: iColumns устанавливает количество колонок в раскладке отчета.

stripQuotes метод

Возвращает строку с удаленными разделителями.

Синтаксис: stripQuotes(cString)

Возвращает: строку.

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

Note:
Этот метод удаляет используемые в качестве разделителей двойные (") и одиночные кавычки ('),но не удаляет квадратные скобки ([ и ]). Это было разработано для удаления разделителей, которые могут быть помещены в значения полей FRX родным Дизайнером отчетов. Если в значении поля имеются квадратные скобки, то это означает, что они добавлены не Дизайнером отчетов.

synchObjectPositions метод

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

Синтаксис: synchObjectPositions()

Возвращает: логическую величину.

Аргументы: не имеет.

Пример

Этот пример изменяет ширину поля в записи таблицы отчета, для размещения другого выражения в этом поле.

Он использует метод FrxCursor.getFruTextWidth() для определения корректной ширины для нового содержания поля. После этого он использует метод FrxCursor.getFrxTimeStamp() для перезаписи временного штампа для этой записи.

  Скопировать код
#DEFINE OBJTYPE_FIELD           8
LOCAL iWidth, oFrxCursor
oFrxCursor = NEWOBJECT("FrxCursor", "_FrxCursor")
USE My.FRX
LOCATE FOR objtype = OBJTYPE_FIELD AND ;
           UPPER(ALLTRIM(Expr)) == "DATE()"
IF FOUND()
   iWidth = FrxCursor.getFruTextWidth(TRANSFORM(DATETIME()), ;
                                       fontface,fontsize)
   REPLACE Expr WITH "DATETIME()", ;
           Width WITH iWidth, ;
           Timestamp WITH FrxCursor.getFrxTimeStamp()
ENDIF

Смотри также