FRX Cursor Foundation Class
This class provides methods to translate and manipulate various values in Label (lbx) and Report (frx) files.
Category | Reporting |
---|---|
Default Catalog |
Visual FoxPro Catalog\Foundation Classes\Output\Output Helper Classes |
Class |
frxCursor |
Base Class |
Custom |
Class Library |
_FrxCursor.vcx |
Parent Class |
Custom |
Remarks
This class exposes the algorithms used by ReportOutput.APP, ReportBuilder.APP, and ReportPreview.APP to interpret various printing values and Report (frx) and Label (lbx) table values.
It is primarily useful for developers extending Visual FoxPro reporting functionality. For more information, see Extending Report Functionality in Visual FoxPro.
FrxCursor helps you handle many details of the Report and Label file format that are otherwise obscure and, in many cases, very complex. The topic Understanding and Extending Report Structure will give you important details on this file format.
Important
Many methods of this class use a measurement unit known as a FRU. FRUs are FoxPro report units, specified as 1/10000 inch. This unit is the internal unit used by the Visual FoxPro Report Designer to store layout measurements and position. The methods of FrxCursor help you convert FRUs into units you can use more easily in other environments.
Properties, Events, Methods | Description |
---|---|
binStringToInt method |
Returns the numeric equivalent of binary data encoded as a string of bytes. Syntax: Return: integer Arguments: cBytes provides the string of bytes for which the method returns the numeric equivalent. For example:
An example of this method being called can be found in Report Protection Flags. |
binToInt method |
Converts a string of 1's and 0's into an integer. Syntax: Return: integer Arguments: cString provides the string of 1's and 0's for which the method returns the integer equivalent. For example:
|
charsetToLocale method |
Converts a given fontcharset value to a candidate locale Id for use with the STRCONV() function. Parameters: nCharSet Syntax: Return: integer Arguments: nCharSet provides the fontcharset value to be converted. |
createBandCursor method |
Creates a cursor with alias "bands" from the FRX cursor, containing useful info about the bands in the report. Syntax: Return: logical Arguments: cFrxalias provides the alias of the open Report table (frx) from which the "bands" cursor data should be derived. If the argument is omitted, the method assumes an alias of "FRX". |
createCalcResetOnCursor method |
Creates a cursor (alias "reset_on") containing records of information for each option in the Report Designer's Calculation Reset combobox. Refer to the Calculate Tab, Report Control Properties Dialog Box (Report Builder) topic for information on the available values. Syntax: Return: logical Arguments: none. |
createDefaultPrintEnvCursor method |
Creates a one-record cursor with the same structure as the FRX, with the default printer environment data loaded into EXPR, TAG, and TAG2 fields. Syntax:
Return: logical Arguments: cFrxAlias provides the alias of the open Report table (frx) from which the structure is derived. cDestAlias provides the alias for the one-record cursor the method creates. The default aliases are "FRX" and "defPrnEnv." Note The FRX source cursor's structure can have custom fields along with the standard Report table structure, and these fields will be duplicated in the resulting target (defPrnEnv) structure. Refer to Understanding and Extending Report Structure for more information. |
createGroupCursor method |
Creates a cursor with the alias "groups," derived from the FRX cursor, containing useful info about the report data grouping. Syntax: Return: logical Arguments: cFrxAlias provides the alias of the open Report table (frx) from which the structure is derived. |
createObjectCursor method |
Creates a cursor with the alias "objects" from the FRX cursor, containing useful info about the layout objects in the report. Calls the createBandCursor method if necessary. Syntax: Return: logical Arguments: cFrxAlias provides the alias of the open Report table (frx) from which the structure is derived. The default is cDestAlias specifies the destination alias of the cursor which will be created. The default is iOption has the following possible values: iOption = 0 Default value if the argument is not included. Method includes all objects in frx, ignoring grouped items. iOption = 1 Includes only selected/CURPOS=.T. records in the cursor. iOption = 2 Includes all objects, showing grouped items as a single group record. iOption = 3 Provides a breakdown of grouped records. Note that some records included in a group may be marked deleted(). You can use SET DELETED ON to omit these records. lRuntime specifies that the object cursor should use report run-time values for each object's start band and end band. The default value is .F. which specifies that the band location values are correct as determined by the Report Designer layout engine. The report run-time engine uses different algorithms to determine which band a report layout element starts and ends in. |
createVariableCursor method |
Creates a cursor with the alias "vars" derived from the FRX cursor, containing useful info about the report variables defined in the report. Syntax: Return: logical Arguments: cFrxAlias provides the alias of the open Report table (frx) from which the structure is derived. |
fruToPixels method |
Returns the size in pixels of a given number of FRUs. Syntax: Return: numeric (number of Pixels) Arguments: iValue is an integer value providing the number of FRUs to be converted to a number of pixels. |
getBandFor method |
Returns an object representing the start or end band for a given object record. Since an object can span multiple report layout bands, this method provides either the start or end band in which the object is anchored. It uses the vertical offset position of the layout object to determine the correct bands. Syntax: Return: band object (the object represents the data in the FRX describing the relevant band) Arguments: cUniqueID is the FRX UniqueID value of the object for which you want band information. lStart indicates whether you want the start or end band. |
getFruTextHeight method |
Returns the height in FRUs of a text string displayed using a font with specified attributes. Syntax: Return: integer value in FRUs. Arguments: cText is the string you want to measure. cTypeFace is the name of the font. iSize is the point size of the font. cStyle provides the styles you want to apply to the string, using the same values you would pass to the GETFONT( ) function. For more information, For more information, see AFONT( ) Function. |
getFruTextWidth method |
Returns the width in FRUs of a text string displayed using a font with specified attributes. Syntax: Return: integer value in FRUs. Arguments: cText is the string you wish to measure. cTypeFace is the name of the font. iSize is the point size of the font. cStyle provides the styles you want to apply to the string, using the same values you would pass to the GETFONT( ) function. For more information, For more information, see AFONT( ) Function |
getFrxTimeStamp method |
Returns a time stamp for a given date/time, formulated according to the standards used in Visual FoxPro system tables (frx and lbx files, for reports and labels). Syntax: Arguments: vDateTime is an optional argument of either Date or DateTime type. If you omit the argument, the method uses the current DATETIME( ) value. |
getMetadataDomDoc method |
Returns an MSXml.DomDocument object containing the XML report memberdata for the current record in the FRX. If the STYLE field for the current record is empty, this method returns an empty template document of the appropriate XML schema. Syntax: Return: MSXml.DomDocument object, or NULL if the FRX alias is not USED(). Arguments: cFrxAlias provides the alias of the open Report table (frx) from which the structure is derived. |
getObjectsInBand method |
Returns a Collection of UNIQUEID values for each object that is contained by the specified Band. Syntax: Return: Object of Collection type, holding either UNIQUEID values for the selected layout objects or RECNO() values for the layout objects. Arguments: cFrxAlias provides the alias of the open Report table (frx) from which the structure is derived. lRecno indicates which type of values you want to have in the Collection. If you pass a second parameter of |
getReportAttribute method |
Returns a given attribute of the report header. Syntax: Return: a Report attribute based on the argument supplied in the method call. Arguments: cAttributeType indicates the type of Report attribute value you want to receive. The following cAttributeType values are supported (case-insensitive): "UNITS" Returns an integer value indicating the units, as stored in the Frx.RULER field. Note This argument value can also return an associated string, representing the units, if you include the lAlternate argument with a value of "MULTICOLUMN" Returns a logical value. "COLUMNCOUNT" Returns an integer value. "PROTECTION" Returns a binary character string, which can be parsed to evaluate the different types of Report protection associated with this report on a global level. For more information, see Setting Protection for Reports |
getSelectedObjectCount method |
Returns the number of currently selected objects (objects with the CURPOS field value Syntax: Return: integer. Arguments: none. |
getTargetTypeText method |
Returns a description of an FRX object's type, given the type and code values as stored in the FRX OBJTYPE and OBJCODE fields. Syntax: Return: String. Arguments: iType provides the object's OBJTYPE value. If you omit this argument, or if you provide a value that is not one of the known OBJTYPE values, this method returns the string iCode provides the subsidiary OBJCODE value, used for FRX records with more than one type of record using the same OBJTYPE (primarily layout band records). |
getTimeStampString method |
Converts a Visual FoxPro time stamp into a readable string. Syntax: Return: String. Arguments: iDateTimeStamp is an integer in the format used by Visual FoxPro to store datetime stamps in system files (frx and lbx files, for reports and labels). For example:
Tip You can also use this method to examine the datetime stamp values in Visual FoxPro class libraries (vcx files). |
getUnitValueFromFru method |
Returns a given unit value for a given value in FRUs, depending on the units. Syntax: Return: numeric. Arguments: nFruValue is a number of FRUs, which may have decimal places. iUnits is an integer indicating the type of unit for which you want to receive the converted value. This value is determined by the integer values used in a report (frx) or label (lbx) table to specify ruler units. See Understanding and Extending Report Structure for more information. |
hasBand method |
Returns Syntax: Return: logical. Arguments: iObjCode is an integer indicating the type of optional band for which you are checking. Tip Use this method to check for band types that do not occur in every report. For example, you can check for the existence of a Group band or a Summary band. |
hasDetailHeader method |
Returns Syntax: Return: logical. Arguments: cDetailBandID is a string matching the Frx.UNIQUEID field value for the detail band you are investigating. Tip Detail Header and Detail Footer bands are optional. If you receive a .T. value for a Detail band, however, you can be certain that both Detail Header and Detail Footer bands are present; these bands are always paired. |
hasProtectionFlag method |
Returns Syntax: Return: logical. Arguments: cBytes is a string evaluated by this method as a series of bytes. iFlag is the bit value representing a type of report protection for which you are checking the report or report layout object. |
insertBand method |
Inserts a band of a given type into the currently selected work area. This method assumes that a valid FRX cursor is already selected and that its record pointer is located at the correct location for the insert operation. Syntax: Return: logical. Arguments: iObjCode indicates the type of band record you want to insert in the FRX table. |
insertDataEnvRecord method |
Inserts a data environment object record into an FRX cursor. This method assumes that the record pointer is appropriately located. Syntax: Return: logical. Arguments: cID is the unique ID value for the new record's UniqueID column. cName is the value for the new record's Name column. cExpr is a list of name-value pairs to be included in the new record's Expr column. cCode is the text of method code to be included in the new record's Tag column. |
insertDetailBand method |
Inserts a Detail band into the currently selected work area. This method assumes that a valid FRX cursor is already selected and that its record pointer is located at the correct location for a Detail band record. Syntax: Return: logical. Arguments: none. |
insertDetailHeaderFooter method |
Inserts a Detail Header and Detail Footer band into an FRX cursor in the currently selected work area. This method assumes that a valid FRX cursor is already selected, and that its record pointer is located on a Detail band record that does not currently have Detail Header and Detail Footer bands. Syntax: Return: logical. Arguments: none. |
insertSummaryBand method |
Inserts a Summary band into the currently selected work area. This method assumes that a valid FRX cursor is already selected and that that the FRX cursor does not already have a Summary band record. Syntax: Return: logical. Arguments: lNewPage indicates whether the Summary band should start a new page. If the Summary band starts a new page, lPageHeader indicates whether the Summary page should have a Page Header band and lPageFooter indicates whether the Summary page should have a Page Footer band. |
insertTitleBand method |
Inserts a Title band into the currently selected work area. This method assumes that a valid FRX cursor is already selected and the FRX does not already have a Title band. Syntax: Return: logical. Arguments: lNewPage indicates whether the Summary band should start a new page. |
intToBin method |
Converts an integer into a string of 1's and 0's. Syntax: Return: String. Arguments: iInteger provides the integer for which the method returns a string of 1's and 0's. For example:
|
intToBinString method |
Returns a binary value encoded as a string of bytes for the integer you specify. Syntax: Return: String (cBytes). Arguments: iInteger provides the integer for which the method returns a string of 1's and 0's. For example:
An example of this method being called can be found in Report Protection Flags. |
pixelsToFru method |
Returns the size in FRUs of a given number of pixels. Syntax: Return: numeric (number of FRUs) Arguments: iValue is an integer value providing the number of pixels to be converted to a number of FRUs. |
popPrintEnv method |
Restores the printer environment from a previously saved cursor. This method assumes that the previously saved cursor is currently selected. Syntax: Return: logical. Arguments:none. |
pushPrintEnvToCursor method |
Saves the current printer environment to a cursor, which is created by this method. Syntax: Return: logical. Arguments:cSavedInAlias provides the alias of the cursor you want to create, and to which you want the printer environment saved. |
screenDPI property |
The DPI of the Report Designer. In VFP9 this is hard coded to 96, regardless of the actual display's DPI. Default: 96 |
setColumnCount method |
Adds or removes columns (and column header/footer records) from the FRX cursor. This method assumes the FRX cursor is selected. Syntax: Return: logical. Arguments:iColumns sets the number of columns for the report layout. |
stripQuotes method |
Returns a string with embraced string delimiters removed. Syntax: Return: string. Arguments:cString is the value from which you want to strip delimiters. Note This method strips delimiting double-quotation marks ( |
synchObjectPositions method |
Resets non-deleted objects in the FRX relative to the start of the band they are in after bands have been resized or repositioned in the layout. This method assumes that FrxCursor's bands and objects cursors have been created, that the currently selected table is a cursor of FRX structure, and that the method does not need to restore the record pointer after processing the records in the cursor. Syntax: Return: logical. Arguments: none. |
Example
This example changes the width of a field in a Report table record, to accommodate a different expression in this field.
It uses the FrxCursor.getFruTextWidth() method to determine the correct width for the new contents of the field. Then it uses the FrxCursor.getFrxTimeStamp() method to update the timestamp for this record.
#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
See Also
Reference
Visual FoxPro Foundation Classes A-Z
Concepts
Guidelines for Using Visual FoxPro Foundation Classes