home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Unleashed / Visual_Basic_4_Unleashed_SAMS_Publishing_1995.iso / repease / rep.pas < prev    next >
Pascal/Delphi Source File  |  1995-07-21  |  14KB  |  300 lines

  1. {******************************************************************************
  2.                Global Constants
  3. *******************************************************************************}
  4. Const
  5.   FORM_SIGN       =$DEBC;
  6.  
  7.   UNITS_PER_INCH  =250;
  8.   NAME_WIDTH      =50;
  9.  
  10.   SRC_APPL        =0;
  11.   SRC_CALC        =1;
  12.   SRC_SYS         =2;
  13.   SRC_CONST       =3;
  14.   SRC_NONE        =4;
  15.   SRC_DLG         =5;
  16.  
  17.   TYPE_NUM        =1;
  18.   TYPE_DBL        =2;
  19.   TYPE_TEXT       =3;
  20.   TYPE_LOGICAL    =4;
  21.   TYPE_DATE       =5;
  22.   TYPE_PICT       =6;
  23.                      
  24.   SUM_NONE        =0;
  25.   SUM_TOTAL       =1;
  26.   SUM_AVERAGE     =2;
  27.   SUM_COUNT       =3;
  28.   SUM_MAX         =4;
  29.   SUM_MIN         =5;
  30.  
  31.   DT_MMDDYY       =0;
  32.   DT_DDMMYY       =1;
  33.   DT_MMDDYYYY     =2;
  34.   DT_MMMDDYYYY    =3;
  35.  
  36.   FLAG_TRIM       =$1;
  37.   FLAG_SUP_ZERO   =$2;
  38.   FLAG_PAD_ZERO   =$4;
  39.   FLAG_CAPS       =$8;
  40.   FLAG_FIRST_CAP  =$10;
  41.   FLAG_SMALL      =$20;
  42.   FLAG_COMMA      =$40;
  43.   FLAG_WRAP       =$80;
  44.   FLAG_WORD_WRAP  =$100;
  45.   FLAG_RETAIN     =$200;
  46.   FLAG_FLEX_SIZE  =$400;
  47.  
  48.   RFLAG_TRIAL     =$1;   
  49.  
  50.   ERR_NO_FILE     =1;
  51.   ERR_NO_DEVICE   =2;
  52.   ERR_NO_MEM      =3;
  53.   ERR_BAD_EXP     =4;
  54.   ERR_SUSPEND     =5;
  55.   ERR_ZERO_DIVIDE =6;
  56.   ERR_TYPE_MISMATCH =7;
  57.   ERR_INCOMPLETE  =8;
  58.   ERR_DUPLICATE   =9;
  59.   ERR_PRINTER     =10;
  60.   ERR_IO          =11;
  61.   ERR_DISPLAY     =12;
  62.   ERR_WRAP        =13;
  63.   ERR_FONT        =14;
  64.   ERR_OTHER       =15;
  65.                   
  66.   ERR_BAD_WND     =16;
  67.  
  68.   REP_CLOSE       =WM_USER;
  69.  
  70.  
  71. type
  72.  
  73. {*****************************************************************************
  74.                         Field Structure
  75. *****************************************************************************}
  76.    
  77.    StrField = record
  78.          source: Integer;              { source of field data: application,calculation,system, constant etc }
  79.  
  80.          name: array [0..NAME_WIDTH+1] of char; { field name }
  81.          FileId: Integer;              { an optional id that may be defined by the calling application }
  82.          FieldId: Integer;             { another optional id that may be defined by the calling application} 
  83.          Fieldtype: Integer;           { numeric/alphanumeric/logical/date }
  84.          width: Integer;               { field data width as stored in your database}
  85.          DecPlaces: Integer;           { decimal places for numeric fields }
  86.          AllowChanges: Integer;        { Allow modification of the following fields }
  87.  
  88.          InUse: Integer;               { TRUE=in use, FALSE=not in use }
  89.          flags: Integer;               { flags }
  90.          SumType: Integer;             { summary type: total/average/minmum/maximum/none }
  91.          SysIdx: Integer;              { index into the system field table for system fields }
  92.  
  93.          DateFormat: Integer;          { date format }  
  94.          DateDelim: array [0..1] of char;  { date delimiter character, i.e. / or - }
  95.  
  96.          CurrencySymbol: array [0..3] of char;  { currency symbol }
  97.          LogicalSymbols: array [0..1] of char;  { logical TRUE and FALSE symbols }
  98.  
  99.          NegSignPrefix: array [0..3] of char;   { negative sign prefix }
  100.          NegSignSuffix: array [0..3] of char;   { negative sign suffix }
  101.          PosSignPrefix: array [0..3] of char;   { positive sign prefix }
  102.          PosSignSuffix: array [0..3] of char;   { positive sign suffix }
  103.  
  104.          CalcExp: array [0..NAME_WIDTH+1] of integer; { expression for the calculated fields }
  105.          
  106.          CharData: pChar;              { character data, pointer to an object of size = field.width+1 }
  107.          NumData: LongInt;             { numeric data (long) }
  108.          DblData: double;              { numeric data for field = TYPE_DBL }
  109.  
  110.          HoldNum: LongInt;             { long accumulater: total,minimum,maximum,etc...}
  111.          HoldDbl: double;              { double accumulater: total,minimum,maximum,etc...}
  112.          count: LongInt;               { number of records in a group during execution }
  113.  
  114.          section: Integer;             { section that holds the field (report time only)}
  115.          misc: Integer;                { used for miscellaneous purposes }
  116.  
  117.          ParaChar: array [0..1] of char; { specify the new paragraph indicator character 
  118.                                            in the first byte.  Needed only for a word/wrapped
  119.                                            text field. }
  120.  
  121.          reserved: array [0..13] of char; { reserved to pad to 256}
  122.        end;
  123.  
  124.  
  125.    AStrField = array [0..0] of StrField;  { pointer to the field structure }
  126.    PStrField = ^AStrField;
  127.  
  128. {*****************************************************************************
  129.    The parameter structure definition that is used by your application
  130.    to specify the operation parameters and text data to the 'form' routine.
  131.    For an example for using this structure, refer to the demo.c file.
  132. *****************************************************************************}
  133.  
  134.    StrForm = record 
  135.        x: Integer;       { Initial x position of the editing window,
  136.                            you may specify CW_USEDEFAULT to use default values.}
  137.        y: Integer;       { Initial y position of the editing window.}
  138.        width : Integer;  { Initial width of the window in device units,
  139.                            you may specify CW_USEDEFAULT to use default values.}
  140.        height : Integer; { Initial height of the editing window.  When you
  141.                            use CW_USEDEFAULT for width, the height parameter is 
  142.                            ingnored.}
  143.  
  144.        UserSelection: Pointer;
  145.                            { Arguments: (hWnd: Handle; fields : StrField; SortLevel: int) 
  146.  
  147.                              A pointer to the function returning the user 
  148.                            selected field through the structure pointer. 
  149.                            Your application returns the chosen field through 
  150.                            the second parameter.  The third argument indicates 
  151.                            the sort field number. If it is equal to zero,  
  152.                            it means that the field being sought is not a sort 
  153.                            field. The function returns a TRUE value if 
  154.                            successful. 
  155.  
  156.                            When using ReportEase as a DLL, this pointer must
  157.                            be passed using the MakeProcInstance function.  Your
  158.                            application must define this function as exportatable
  159.                            and include it it the EXPORT section of the 
  160.                            definition file.
  161.                            }
  162.  
  163.        VerifyField: Pointer; 
  164.                            { Arguments: (fields:  StrField; SortLevel: integer)
  165.                              A pointer to the user routine that validate a 
  166.                            field name.  The field name is passed to the routine 
  167.                            by the 'name' variable in the StrField structure.  
  168.                            This routine should also fill the 'type' variable 
  169.                            in the structure. The second arguement indicates the 
  170.                            sort field number. If it is equal to zero, it means 
  171.                            that the field to verify is not a sort field.  The 
  172.                            function returns TRUE to indicate a valid field. 
  173.                            
  174.                            When using ReportEase as a DLL, this pointer must
  175.                            be passed using the MakeProcInstance function.  Your
  176.                            application must define this function as exportatable
  177.                            and include it it the EXPORT section of the 
  178.                            definition file
  179.                            }
  180.                            
  181.  
  182.        FileName: array [0..129] of char;  { form file name. If an existing file is specified,
  183.                            the following fields are ignored.} 
  184.                                             
  185.        DataSetName: array [0..19] of char ;{ (Specify for a new file) Your application can 
  186.                            specify a data set name which can be used to
  187.                            associate the application data to the form.  This
  188.                            is an optional field. }
  189.  
  190.         ShowMenu: WordBool;  { show the menu bar ? }
  191.         ShowHorBar: WordBool;{ show the horizonatal scroll bar }
  192.         ShowVerBar: WordBool;{ show the vertical scroll bar }
  193.  
  194.         hInst: THandle;    {  Handle of the current instanaces. }
  195.         hPrevInst: THandle;{  Handle of the previous instances. }
  196.         hParentWnd: THandle;{ Handle to the parent window }
  197.         hFrWnd: THandle;   {  Form main window handle, will be filled by RE later  }
  198.         style: LongInt;    {  Editor window style }
  199.         FontTypeFace: array [0..31] of char; { Default type face, example: TmwRmn Courier, etc }
  200.         open: WordBool;    { TRUE indicates an open window (parameter block in use)}
  201.         modified: WordBool;{ TRUE when the file modified, and needs to be saved }
  202.        end;
  203.  
  204.  
  205. {****************************************************************************
  206.    The parameter structure definition that is used by your application
  207.    to specify the operation parameters to start a report execution session.
  208.    For an example for using this structure, refer to the demo.c file.
  209. ****************************************************************************}
  210.  
  211.    StrRep = record  
  212.        FileName: array [0..128] of char;   { form file name}
  213.  
  214.        device: char;       { P=Printer,S=Screen,A=Ask the user. The following
  215.                              4 parameters are not used if the device is
  216.                              set to 'P' }
  217.  
  218.        x: Integer;         { Initial x position of the report window,
  219.                              you may specify CW_USEDEFAULT to use default values.}
  220.        y: Integer;         { Initial y position of the report window.}
  221.        width: Integer;     { Initial width of the window in device units,
  222.                              you may specify CW_USEDEFAULT to use default values.}
  223.        height: Integer;    { Initial height of the editing window.  When you
  224.                              use CW_USEDEFAULT for width, the height parameter is
  225.                              ingnored.}
  226.  
  227.        field: PStrField;    { (OUTPUT) pointer to an array of fields used by the
  228.                              form.}
  229.        TotalFields: Integer;{ (OUTPUT) Number of fields in the 'field' array. }
  230.  
  231.        SortField: PStrField; { (OUTPUT) pointer to an array of fields used for
  232.                              sorting.}
  233.        TotalSortFields: Integer; { (OUTPUT) Number of fields in the 'SortField' array. }
  234.  
  235.        DataSetName: array [0..19] of char;{ (OUTPUT) This field returns the
  236.                               data set name associated with the form.  Your
  237.                               application may use this information to prepare
  238.                               data for the report executer }
  239.  
  240.        SwapDir: array [0..59] of char;
  241.                              { Directory path to store swapped screen pages
  242.                                When this variable is equal to NULL, RE will use
  243.                                the current working directory for swapping.}
  244.  
  245.        hInst: THandle;       {  Handle of the current instanaces. }
  246.        hPrevInst: THandle;   {  Handle of the previous instances. }
  247.        hParentWnd: THandle;  {  Handle to the parent window }
  248.        style: LongInt;       {  Report window style - needed for screen output only }
  249.  
  250.        DrawPicture: Pointer; { Arguments: (hDC: HDC; PictId, FileId, FieldId: integer; rect: TRect;);
  251.                              { Pointer to the user routine responsible for
  252.                                drawing 'dynamic picture fields'}
  253.    end;
  254.  
  255. {*****************************************************************************
  256.                         Form Header Structure
  257. *****************************************************************************}
  258.    StrFormHdr = record
  259.            FormSign: Word;          { Form File Signature}
  260.  
  261.            name: array [0..NAME_WIDTH+1] of char; { report name}
  262.  
  263.            DataSetName: array [0..19] of char;  { Your application can specify a data set
  264.                                        name which can be used to associate the
  265.                                        application data to the form.  This
  266.                                        is an optional information. }
  267.  
  268.            TotalItems: Integer;      { screen items in the form template }
  269.            FieldCount: Integer;      { total number of fields }
  270.            BreakFieldCount: Integer; { total number of break fields }
  271.            FontCount: Integer;       { number of entries in the font table }
  272.  
  273.            LeftMargin: Single;       { margins in inches}
  274.            RightMargin: Single;
  275.            TopMargin: Single;
  276.            BottomMargin: Single;
  277.  
  278.            SelExp: array [0..NAME_WIDTH+1] of integer; { record selection expression }
  279.  
  280.            Orientation: Integer;     { DMORIENT_PORTRAIT or DMORIENT_LANDSCAPE }
  281.            PaperSize: Integer;       { paper size given by DMPAPER_* variables used for DEVMODE }
  282.            PaperLength: Integer;     { specified in tenths of millimeter, used only if PaperSize = 0 }
  283.            PaperWidth: Integer;      { specified in tenths of millimeter, used only if PaperSize = 0 }
  284.            PrintQuality: Integer;    { print quality }
  285.  
  286.            PrinterName: array [0..NAME_WIDTH+1] of char;      { name of the printer }
  287.            PrinterDriver: array [0..NAME_WIDTH+1] of char;    { printer driver name }
  288.  
  289.            flags: Integer;           { RFLAG_ series flags }
  290.  
  291.            DateFormat: Integer;      { 0=MM/DD/YY, 1=DD/MM/YY }
  292.  
  293.            RulerType: Integer;        { RULER_OFF,RULER_INCH,RULER_CM}
  294.  
  295.            SecBannerHeight: Integer;  { height (logical units) of the section banner}
  296.            FileFormatId: Integer;     { records the file format changes}
  297.            reserved: array [0..145] of char;
  298.        end;
  299.  
  300.