Getting Started
    
      Adding CapeSoft RightReports to your Application
        (JumpStart)
      There is a completed example, in which all of the below steps have been
      followed, in your clarionx\3rdparty\examples\RightReports\abc folder.
      
      
Step 1: Install the latest versions of Draw, RightReports and Clarion
        FreeImage.
      
        - Note that you need Draw version 2.53 or later for RightReports to
          work.
- Note that besides running the FreeImage install file, you will also
          need to download the FreeImage DLL (http://www.clarionfreeimage.com/
          and put this in your clarionx\accessory\bin directory.
- Make sure that you pick the option to register the template for each
          of the three installs, if they are not already registered.
Note: You can get by without Clarion
      FreeImage, but it does very much limit the type of image files you will be
      able to use in your reports. In fact, you will only be able to use
      bitmaps.
      
Step 2: Import the RightReports
        Tables into your dictionary.
      
        - Open your dictionary in the Clarion IDE. 
- Choose File|Import Text. (In Clarion 7,
          the import is buried on the dictionary toolbar in the '>>'
          button)
- Go to your Clarion\accessory\libsrc\win folder.
- TPS : Choose the RightReportsTables.dctx file or 
 SQL : RightReportsTablesSQL.dctx and Open it.
- Make sure you change the file drivers for the imported files (they
          all start with RR) to the driver you are using.
- If you are using an SQL backend, don't forget to fill in the Owner
          for each imported table (except RRImportASCII).
- If you are using FM3 or FM2, don't forget to add the Version option
          (set to 1) under the Table Options for each imported table. 
- Save and close your dictionary.
Step 3: Import the RightReports Procedures into your app.
      
        - Open your application in the Clarion IDE. If this is a Multi-DLL
          application, then open your reporting DLL
- Go to Application | Import Txa ... 
- Import the RightReportsFunctionsABC.txa or
          RightReportsFunctionsLegacy.txa file in your
          Clarion\accessory\libsrc\win folder(if your application is Multi-DLL,
          import this into your reporting DLL). For
          NetWebServerApplications, import the
          RightReportsWebServerFunctionsABC.txa.
- See the  section on Imported RightReports
            Procedures for more info on the imported procedures. 
- If you have xFiles added to this application, then you can import
          the Import and Export procedures into your application - by importing
          the added to this application, then you can import the Import and
          Export procedures into your application - by importing the
          RRImportExport.txa file (as per the above 3 steps).
      Note: For NetTalk Webserver applications, its a good idea to create a
      desktop application with the RightReports windows in it that you can use
      to create, edit and test reports. So go through these steps first with a
      desktop app (if your webserver application does not have an existing
      desktop app, create a new blank one and go through the steps to add
      RightReports for that app as for a normal desktop app). Webserver
      applications, its a good idea to create a desktop application with the
      RightReports windows in it that you can use to create, edit and test
      reports. So go through these steps first with a desktop app (if your
      webserver application does not have an existing desktop app, create a new
      blank one and go through the steps to add RightReports for that app as for
      a normal desktop app).
      
Step 4: Add the FreeImage, Draw and RightReports global extensions to
        your Single EXE app (see Step 4a for Multi-DLL).
      
        - Open your application in the Clarion IDE.
- Go to Global Extensions (in C6, you need to Click on the Global
          button, then click on the Extensions
          button).
- Click on the Insert button and select the
          Activate_ClarionFreeImage extension template.
- Click on the Insert button and select the
          GloDraw extension template.
- On the Options Tab of the Draw Global
          Template, tick the Activate DrawImage and Activate DrawPaint options.
- Click on the Insert button and select the
          Activate_RightReports (Activate RightReports Functions) extension
          template.
- If you want to be able to export reports to a Microsoft Word or
          Excel document, add the CapeSoft Office Inside global extension.
- If you want to be able to preview PDF files (providing you have
          Clarion EE or abprpdf.inc/clw), add the Hyperactive global extension.
          Make sure you add the local extension to the RightReportsPrint
          procedure too.
- Go back to your application tree.
      Note: WebServer apps must have a PDF Global extension added (either the SV
      one or PDF-Tools or one of the other supported 3rdparty templates) - and
      don't forget to check the 'Enable Printing to PDF' on the RightReports
      Global Extension template.
      
      
Step 4a: Multi-DLL Applications
      
      If you have a multi-DLL application and have added Draw to your Data DLL,
      the way to add the global Extensions is as follows:
      
        - Add the Draw Global Extension to the Data DLL,
          and on the General Tab, tick the Activate DrawImage and Activate
          DrawPaint options.
- Add the Global Clarion FreeImage Extension to the Data
            DLL, too
- Add the Draw Global Extension to your reporting
            DLL, and on the General Tab, tick the Activate DrawImage,
          Activate DrawPaint and "Use Draw that is exported in another DLL"
          options.
- Add the Global Clarion FreeImage Extension to your reporting
            DLL 
- Add the Global RightReports Extension to your reporting
            DLL 
- Make sure Generate All File Declarations (Global Properties | File
          Control Tab) is ticked in your Data DLL
- If you want to be able to export reports to a Microsoft Word or
          Excel document, add the CapeSoft Office Inside globa extension to the
          reporting DLL.
- If you want to be able to preview PDF files (providing you have
          Clarion EE or abprpdf.inc/clw), add the Hyperactive global extension
          to the reporting DLL. Make sure you add the
          local extension to the RightReportsPrint procedure too.
Step 5: Tick the Generate All File Declarations option for your app.
      You can find this by clicking on the 
Global
      button and going to the 
File Control tab its
      the first checkbox. If you don't do this, RightReports will only pick up
      tables you've specified in the table tree structures of the procedures in
      your application, and you will hence be able to use only these tables in
      your reports at runtime. Ticking this option ensures that RightReports
      makes all the tables in your dictionary available to the end user.
      
Step 6: Fill in some of the Global Template Options.
      There are three main things you probably want to worry about here:
      
      Step 7: Call the RightReportsBrowse procedure from somewhere in your
        app.
      This is a browse for all the reports that have been created in your
      program. Call the RightReportsBrowse procedure (no parameters). If your
      application has a Frame, adding a Browse Reports option to one of the
      menus might be an idea, and you'll probably want to start a thread if it's
      a MDI application (if it's not, then you need to turn the MDI child off).
      
      For WebServer applications:
      
        - If you have a menu procedure, then add an item ('Reports') with a
          URL of 'RightReportsWebBrowse'.
- On the RightReportsWebPrintOptions window in the NetWebForm
          Settings, set the URL on Cancel to the procedure's URL that calls the
          RightReportsWebBrowse.
Step 8: Add outputs
        to the Previewer window
      Note: Existing apps (where RightReports was added to the app with version
      1.58 or prior) require a re-import of the PrintPreviewer procedure in
      order to support this functionality. Import the
      RightReportsPreviewer(legacy or ABC).txa.
      
      By default the previewer only outputs to the printer, but you can easily
      add additional outputs depending on what additional tools you own. The
      possibilities are (at this stage):
      
        - Print to Word using OfficeInside editable reports functionality
          (requires the addition of the OfficeInside Global Extension template)
- Print to Excel using OfficeInside editable reports functionality
          (requires the addition of the OfficeInside Global Extension template)
- Print to PDF using the SoftVelocity ABC PRN to PDF classes (requires
          the addition of the Report to PDFGlobal Extension template)
- Print to PDF using the PDF-Tools classes (from docu-track).
          (requires the addition of the PDF-Tools Global Extension template)
      Steps to implement:
      
      1. Open the RightReportsPremier window in the window formatter.
      2. Now populate the RightReports_PrintPreviewOutput control template (just
      a button) onto the window, next to the existing Print select button in the
      output group.
      
      
 
      
      Right-click and select 'Actions'. On the general tab, select the Output to
      you would like to use (depending on which Global Extensions you have added
      to your application will depend on the options visible). On the extras tab
      (of the control properties) change the icon to something meaningful (like
      RR_PDF.ico, RR_Excel.ico or RR_Word.ico)
      
      For PDF-Tools support, you must select the "Use the PDFTools Template"
      checkbox.
      
      then you need to add the code template to generate the pdf into the
      Previewer embed points:
      
      
 
      
      The template prompts should be as follows:
      
      
 
      
      4. Click OK and save your changes to the formatter window.
      
      Do this for each output type you want to support in your report.
      
Step 9: Ok Go!
      Compile and run your app - and take a look at the 
Using
        the Report Editor section of this doc for details on creating
      reports.
      
The Imported RightReports Procedures
      You will notice that one of the steps explained above while adding
      RightReports to your application involved importing a number of
      procedures. Below we give a short description for each of these
      procedures.
      
        - RightReportsBrowse: This is the browse
          containing all the reports created in your application.
- RightReportsUpdate: This is the 
            Report Editor. Its the window that pops up when you choose to
          edit a report in the browse above, and is actually a form that updates
          the report tables.
- RightReportsOverrideParentFile:  This is
          a window that will pop up when you choose the edit the parent file of
          a  Secondary Loop or  Lookup. 
- RightReportsPremier: This is the built-in
          RightReports report previewer. 
- RightReportsPrint: RightReportsPrint is
          the procedure responsible for printing the report created by the
          report editor. There is a 
            special section on RightReportsPrint giving more information. 
- RightReportsViewTextFile: This is the
          built-in RightReports report previewer for text reports.
- RightReportsImportTXR: This imports the
          specified TXR file into RightReports. Users can then edit and print
          the imported reports as usual. See also the section on
            Importing and Exporting Reports. 
- RightReportsExport: This exports the
          specified report to an xml file. Users can the use the below procedure
          to import the report. This is useful for making reports mobile - for
          example, you could design the report on your end and then just email
          the exported xml file to a client, who can then import the report
          again. See also the section on
            Importing and Exporting Reports. 
- RightReportsImport: This imports a report
          from a specified xml file. See RightReportsImport above for more
          details. See also the section on
            Importing and Exporting Reports. 
 
    Template Options
     The Global Extension
        Template
      The Editor Control
        Template
      The Printer
        Control Template
      The Global Extension
      The General Tab
      
       
      
      
        - Disable All RightReports Features: Use
          this for debugging.
- Enable Web Server in PrintReport: If you
          have added
            NetTalkk 4 to your application and want to be able to use
          RightReports with your web server, tick this option. Not
            fully supported yet. 
- Enable Printing to PDF: If you want
          RightReports to be able to output to a PDF file, tick this option. You
          need the abprpdf class files for this - if you have Clarion 6
          Professional Edition, this is included.
- Use HyperActive
            to preview PDF Files: If you have HyperActive
          Installed and added to your application, you can tick this and PDF
          files will be previewed using 
            HyperActive.
- Previewer: RightReports: Choose this
          option if you want the built-in RightReports Previewer to preview
          printed reports.
- Previewer: ABC: Choose this option if you
          want the built-in ABC Previewer to preview printed reports. 
- Previewer: RightReports, ABC, IceTips, CPCS or
            Handcoded: You can also choose to use other 3rdparty report
          previewers. Depending on your choice, a new Tab may appear with
          options for that previewer, as is discussed below. See the section on
           The Report Previewer
          for more details on how to use these options. 
- Previewer selects output and prints: If
          you want the previewer to select the output type (rather than the
          PrintOptions window) , check this checkbox. By default, the new
          PrintPreviewer will set this option automatically.
- RightReportsPrint Proc: The procedure name to Print the report
          (usually RightReportsPrintReport)
- Import/Export options (requires xFiles): Exported
            File Extension:): Exported File Extension: The file to use to
          store the exported XML data for the reports. Program
            Identifier: the identifier to associate reports with this
          application.
The
        Previewer Tab 
      
      Depending on your choice of Report Previewer, a tab may appear with
      options for that Previewer. These are basically the options for that
      previewer as they would appear if you had installed and used that 3rdparty
      tool directly. Consult the documentation that came with that tool for more
      information on the available options. See also 
The
        Report Previewer for more details on how to install and use these
      3rdparty report previewers. 
      
      
The Data Sources Tab
      
       
      
      All tables in your dictionary will be included and made available to users
      according to the 
Files Tab. If you would
      like to make other data sources available to users, such as queues and
      views, you need to fill in the details here. The insert window looks
      similar to the following:
      
      
 
      
      You are required to enter the Label of the data source, as well as a
      prefix (if it has one). For View's, you need to specify its primary
      source. For Queues, you will notice you can add Orders to the list
      provided. The idea is that you give each order a unique name and specify
      the fields in the queue to be used for this order.
      
      Note that you can enter data sources here that are either declared
      globally (preferably threaded), or locally in the 
RightReportsPrint
      AND 
RightReportsUpdate procedures. The data
      sources need to be available to both of these procedures for the following
      reason: The Update procedure needs it in order to make it available to the
      user at run time. It needs the actual structure in order to add it to the
      list of data sources available to the user for report creation, to provide
      a list of fields, etc. There does not need to be data in the data source
      at this point. The print procedure, however, needs both the data structure
      as well as the data in order to print out the report.
      
      We've placed this Tab on the global extension to prevent the need for you
      to enter this information twice (once for the update procedure, and once
      for the print procedure). Unfortunately this means that you have to type
      out the names of your data sources by hand, as global extensions do not
      allow you open the Fields Dialogue.
      
      
The Relationships Tab 
      
      
       
      
      Once you have entered your Queue and View data sources on the 
Data
        Sources Tab above, you can specify relationships for them on this
      here Relationships Tab. Since File relationships are determined by your
      dictionary structure, the idea is that you use this space to specify
      relationships between queues, or relationships between a queue and a file.
      
      
 
      
      You need to specify the data source and its relating source, the type of
      relationship, and also the orders (think of these as keys) used to
      establish the relationship. Once the latter has been filled in, you also
      need to specify how the fields of the specified keys are primed for this
      relationship, in the two Linking Fields boxes.
      
      
Note: If the list of files does not have
      anything in it, go out of the Global Extension, Generate All and go back
      in.
      
      
The Custom
        Functions Tab
      
      On this tab, you can add functions and variables defined in your
      application that you want to make available to users at run time (these
      will become available to them on the 
Functions Tab
        of the Editor). Users editing reports will be able to make use of
      these functions to calculate values, etc. to be included in the report.
      
      
 
      
      You need to make sure you have created the function in your application
      before adding it to this list. Also, it needs to be accessible by the
      RightReportsPrint procedure. So it should either be declared as global, or
      added to the procedures for RightReportsPrint.
      
        - Disable use of this function in RightReports:
          Temporarily disable a function from being used in a report.
- This function is managed by MultiProj
          (requires Multi-Proj v 2.81 or later): The Multi-Proj generated
          extension template(s) added to this application can generate a list of
          procedures, parameters, and their descriptions for RightReports to
          use. You can (not recommended) use the Override
            MultiProj updates group to override certain automatic values
          generated by the MultiProj extension.
- Function is in another DLL: Check this if
          the function is imported from another DLL.
- Function: the name of the function to use
          in the reports.
- Bind to name: the name of the function
          used in the reports (if different from the Function name). You can use
          the Additional Mapped names list to add
          additional names used in the reports to bind to this function.
- Description: A description of the
          function's function (i.e. what it does) - used in the help on the
          RightReports editor window.
- See Also: A list of functions relating to
          this one.
- Parameter List: a list of parameters that
          the function uses when returning a value.
 
      
      
        - Variable name: the name of the global
          variable as it is declared in your application.
- Bind to name: the name of the variable
          used in the reports (if different from the Function name). You can use
          the Additional Mapped names list to add
          additional names used in the reports to bind to this variable.
The Files Tab 
      
      On this tab you can override the 
        fields you included or excluded from the 
        Files List in your dictionary. This is useful for if you have more
      than one Report Editor in your application and you want to switch some of
      your tables on and off at DLL level rather than for the entire
      application.
      
        - Suppress Files: Select the files that you
          don't want to appear in the report editor for this DLL.
- Include Files: Select files here that
          were excluded in the dictionary but you still want them to appear in
          the report editor for this DLL, Tree Defn File, Calcs File, Totals
          File, Secondary Source 
The Options Tab 
      
      
        - Font Settings: Used for default fonts when
          font is not set in the report (when printing).
- Class is External: Tick this if you have
          a Multi-DLL application, and the Global Extension was added to a
          different DLL (i.e. if the RightReports class was compiled into a
          different DLL). 
- Don't Link: Indicates that the class
          should not be linked in locally, it is external (in a DLL, not local).
- RightReports Based On: A super-advanced
          option allowing you to specify which class RightReports should inherit
          from.
-  Tables
            per FQ module: For each table, a number of procedures are
          generated by RightReports. Originally, each table had its own module
          created by RightReports into which these procedures were generated.
          These modules are named something like repFQ1.clw, repFQ2.clw, etc.
          where "rep" is the first three letters of your application name. Since
          lots of tables hence means lots of FQ modules, you can specify here
          how many tables' procedures to generate into one FQ module to reduce
          this number. The default is 5. 
- Don't tick this: Used internally for
          Capesofttapplications.applications.
- Generate Query Wizard code for propsql:
          Used in conjunction with QueryWizard. Customized functionality
- Logging: Use the checks to output logging
          for various aspects of RightReports.
- Global class: enter the global class used
          by RightReports (normally the RightReportsGlobalClass).
The
        RightReports Files Tabs
      You will notice that there are a number of other tabs on the Global
      Extension, such as Report, Band File, Controls File and Fields File. For
      the most, you will not need the tabs. If you, however, decide to rename
      some of the 
 Imported
        RightReports Files or their fields, then you would possibly have to
      come to this tab to make sure all the table names, and their related field
      names, are still filled in correctly on this tab. 
      
      
 
      
       
      
       
      
       
      
       
      
       
      
       
 
      
       
      
      The Local Extension 
      The General Tab
      
       
      
        - Disable Here: Use this to disable
          RightReports in this procedure. For debugging purposes, mainly.
- Show Ruler: You could have a ruler along
          the bottom of the graphic display area, if you wanted. Not
            fully implemented yet. 
- Background Color: Set this to the colour
          you would like the background of the Graphic
            Band Editor to be. 
- Gap Between Bands: Set this to the number
          of pixels you want to separate bands with in the 
            Graphic Band Editor.
- Call Procedure to Update Control Properties: Usually
          you edit the properties of the selected control using the 
            Property Tab. However, you could also add functionality to allow
          the user to edit these in a window via choosing an option from the
          right-click menu. 
- Update Procedure: If the above option is
          ticked, enter the name of the update procedure for the control
          properties here. 
The
        RightReports_Editor Control Template
      The General Tab
      
      
 
      
      
        - Disable Here: allows local disabling of
          RightReports code on this window.
- Show Ruler: 
- Background Color: The background color of
          the  Graphic Band Editor.
- Gap between Bands: The gap between the
          detail bands in the Graphic Band Editor.
- Call procedure to update control properties:
          If you don't want to use edit in place, you can use a procedure to
          edit the control properties.
- Don't sort the files Queue: If you check
          this, then the file fields will be in record order in the Fields list,
          rather than in alphabetical order.
- RR Controls on sheet: The sheet containing
          the RightReports controls from this template.
The Hot Keys Tab 
      
      On this tab you can specify hot keys for editing and moving controls in
      the 
 Graphic Band Editor.
      The prompts are rather self-explanatory.
      
      
The Advanced Tab
      
       
      
        - Object Name: The name of the RightReports
          object in this procedure.
- Based on Class: A super-advanced option
          allowing you to specify which class RightReports should inherit from.
          By default it is whatever class was specified on the Global
            Advanced Tab. Once again its best if you leave this sucker
          alone.
The
        RightReportsPrintControls Control template
       
      
      
        - Date Picker uses: In this group, you can
          specify the date picker procedure to use for the lookup procedure for
          user variables with date pictures on the PrintOptions window. No
            date picker (don't use a date picker at all), ABC
            class (uses the ABC date picker), Procedure
          (your own defined procedure to return a date in this application), In Another App (your own defined procedure in
          another DLL linked into this application).
- For OfficeInside users (to support export to Excel and Word) , you
          can enter a default Word and Excel file in the prompts provided.
 
      
      On this tab you can enter user variables that link to a lookup procedure
      to aid the user in entering user values (used in the report - see the 
 Property Editor). On the User Variables with
      Lookup:
      
        - Variable Name: This is the name of the
          (local or global) variable defined at runtime for the report that has
          a type "user".
- Procedure for lookup: Allows you to select
          a procedure to use to assign the user value.
- Procedure is a Browse: If the procedure
          used for the lookup is a browse, check this, and enter in the Field
            Containing Value. If the procedure is not a browse, it must
          return the value that will be used to prime the user variable.
 
      
      Use this list to override the view creation for these tables selected. You
      will need to handcode the views yourself.
    
 
    Using The Report Editor
     For a thorough overview on using the ReportEditor,
      take a look at the training video: 
http://www.clarionlivemedia.com/webinars/ClarionLive136_20111125_RobdeJagerOnRightReports.wmv
      The Browse Window
      The 
RightReportsBrowse procedure lets you
      browse the current reports in your program.
      
      
 
      
      It shows the date and time at which the report was last modified as well
      as the description. If you click the 
Add or 
Change button, you can edit this graphic report at
      runtime. The update procedure is called 
RightReportsUpdate.
      
The Update Form 
       
      
      The RightReportsUpdate procedure allows you to create and edit graphic
      reports with ease. There are three sections to this window:
      
      The Report Structure List
      This list allows you to specify a Primary Source, and add graphic report
      details, lookups, Secondary Source loops, calculations, headers and
      footers to your report. A short description for each of these is given
      below.
      
      Note that you can move each item up or down depending on where on the
      report it should happen. You can also move each item left or right. If an
      item A is to the above and left of item B, it means that that item A is a
      
parent of item B.
      
        -  Primary Source: This
          specifies the Primary Source for the report.
-  Lookup: If the
          current file has a many-to-one relation with another file, this can be
          used to look up the related record in that related file (by current
            file we mean the file of the closest parent that is either a
          Primary Source or secondary loop).
-  Secondary Loop: If
          the current file has a one-to-many relation with another file, this
          can be used to loop through the related records in the related file.
-  Calculation: Use
          this to perform a calculation and set a variable.
-  Header: This is
          the header band for the report. There can be only one.
-  Footer: This is
          the footer band for the report. Ditto re. the cheesy quote above.
The Graphic Band Editor
      Any detail, header or footer created using the Report Structure List above
      appears in this editor. Check out the cool editing functionality available
      to you:
      
        - Use the provided buttons to add boxes, strings, images and lines to
          any of the bands. 
- Resize the bands and controls on the bands.
- Right-click and observe the neat popup menu allowing you to do
          things like align controls and copy-paste. Holding down the Control
          Key allows you to select multiple controls at once.
A note on Strings: Putting angular brackets
      around a word indicates to the report printing engine that this is
      possibly a 
 local or 
global
        variable (see the Property Editor below), or a field in one of your
      report tables. See the 
        Printing Variable and Field Values section for more details.
      
The Property Editor
      This feature allows you to edit various properties belonging to the
      currently selected item in the Report Structure List. If a control is
      selected in the Graphic Band Editor, it allows you to edit the properties
      for that control. The property editor has several tabs:
      
        -  The Properties Tab:
          On this tab you can edit various properties for the selected
          item or control, including the text value, colors and position.
-  The TotalingTab: You
          can create totals that are automatically calculated through the loop
          for the specified field. 
 Note: The field has to be present somewhere on a band that
          has the loop as parent for the total to be calculated correctly.
-  The Fields Tab: This
          just displays all the tables that are used in this report, with their
          fields and descriptions.
-  The Functions Tab: This
          displays the functions available to the user. You have to create these
          yourself in your app, bind them in the BindRep procedure and add them
          to the AddCustomFunctions procedure (see the next step for more on
          this).
-  The Global Tab: This
          is a list of global variables available to the user for use in the
          report. The user can edit, add and remove these at will. They are
          global in the sense that they are available to all reports in this
          program (see the next step for more on this).
        -  The Local Tab: Similar
          to the Global Tab, except that these variables are only available to
          the current report in the program.
-  The Notes Tab:
          Write any general notes regarding the report here. There's lots of
          space, so go wild. 
The Print Window 
      When you have finished editing the report, you can press OK to save it and
      then click Print on the Browse Reports window. This brings up the Report
      Options window (the procedure is called RightReportsPrint):
      
      
 
      
      Here you can select where you want to print the file to, choose your
      printer, etc. Any local or global report variables which were declared of
      type User will appear on this window, allowing the user to specify their
      values. 
      
      You will also notice a Primary Sort dropdown appearing in some cases. This
      happens when for the Primary Source of that report, the user specified
      User Selects for the sort order. If the keys for the file have non-empty
      descriptions, the descriptions appear in this dropdown. Otherwise the key
      name appears.
      
      Clicking start sends the printing on its way. See the section on 
        The Report Output for more on the output options. 
    
Properties on the Properties Tab
     The 
        Properties Tab on the Property Editor allows you to edit any of the
      properties relating to the currently selected item in the Report Structure
      List in edit-in-place type fashion. If a control on a band is selected,
      its properties will appear in the Property Editor for editing. Below we
      list the properties for each different type of item along with
      descriptions for each. 
      
      
A Note on Parent Files
      Recall we mentioned that if an item A is left of any item B above it in
      the 
 Report Structure List,
      it means that that item B is a 
parent of item
      A. The idea of a 
parent file works more or less
      the same. The parent file of an item is assumed to be the main file of the
      closest Secondary Loop or Primary Source item above it. It is also
      possible to override the parent file of a given Secondary Loop or Lookup
      by changing the Parent File entry on the Properties Tab.
      
      
Primary Sources
      This item contains properties relating to the Primary Source of the
      report, as well as other general
      
        - Description: A description for the
          report. This description is what appears in the 
            Browse Window. 
- Primary Source: The name of the Primary
          Source through which this report will loop. 
- Order By: Choose
          a key for the Primary Source by which it should ordered. If you have
          filled in a description for the key in the dictionary, this
          description will appear in the dropdown. Otherwise, the name of the
          key appears. 
- Archive: To be updated. 
- Order Fields: The fields in the key
          chosen in "Order By" above. To be updated.
           
-  Filter: Enter
          a report filter here for the Primary Source, if desired. This will be
          evaluated for every record fetched. You can include report variables
          in this expression. 
 NOTE: You Must use spaces between variables and their equates:
 (<PCRP:EXPORTED> <> 'Y' or null( <PCRP:EXPORTED> ))
          and <PCRP:TRANTYPE> = 'Cr'
-  Server
            Filter: Enter a filter here. For files and views, this will
          be evaluated server side, which is quick, but means you cannot use any
          report variables. 
-  Server Order:
          Custom order fields for your data source. List of fields should
          be comma-separated. Evaluated server side. Only for files and views.
-  SQL Filter: An
          SQL filter for your data source. Valid for files and views.
-  SQL Order:
          SQL order fields for your data source. Valid for files and views.
- Format: Choose the format of the report.
          Options are Text, PDF, HTML, Excel, and XML. Some of these are To be updated. 
- Graphic: Choose between Graphic and Text
          reports. This defaults to Graphic. 
- Chain To: If you want another report to
          start printing immediately after this one has been printed, put the
          report number here. 
- Report Number: The report number of this
          report. This field is not editable. 
- Send To: Choose where you would like the
          report to printed to by default. Choose between Printer, File and
          Screen. 
- Destination: Choose the printer you would
          like this report to be sent to by default. 
- Landscape: Choose whether you want the
          report to be printed in landscape form by default.
- Report
            Type: The user can use this at his or her discretion. Useful
          for grouping different types of reports together.
Secondary
        Loops
      
        - Parent File: If you would like this to
          have a different parent file than the default, choose it here. See the
           section on Secondary Loops
          and the  Note on Parent Files
          to see what a parent file is. 
- File Name: The name of the Secondary
          Source to loop through. Only files related to this 
            item's parent file in a many to one relationship will appear in
          this dropdown.
- Cache: To be updated. 
- Filter: A
          report filter for this Secondary Source. This will be evaluated for
          every record fetched. You can include report variables in this
          expression.
-  Server
            Filter: Enter a filter here. For files and views, this will
          be evaluated server side, which is quick, but means you cannot use any
          report variables. 
-  Server
            Order: Custom order fields for your data source. Valid for
          files and views. List of fields should be comma-separated. Evaluated
          server side.
-  SQL Filter: An
          sql filter for your data source. Valid for files and views.
-  SQL Order:
          SQL order fields for your data source. Valid for files and views.
- Range _ From: There may appear a number
          of these prompts, depending on the key relating this Secondary Source
          to its parent files. If there are fields other than fields linking
          this Secondary Source to its parent file in the relating key, there
          will appear such a prompt for each of these fields. Fill in the range
          from value for this field, if desired. 
- Range _ To: There may appear a number of
          these prompts, depending on the key relating this Secondary Source to
          its parent files. If there are fields other than fields linking this
          Secondary Source to its parent file in the relating key, there will
          appear such a prompt for each of these fields. Fill in the range to
          value for this field, if desired. 
Lookups
      
        - Parent Source: If you would like this to
          have a different parent file than the default, choose it here. See the
           section on Lookups  and the  Note on Parent Files to see
          what a parent file is. 
- Source Name: The name of the file to do
          the lookup on. Only files related to this item's
            parent file in a one to many relationship will appear in this
          dropdown.
- Cache: To be updated. 
- Linking
            Fields: This only appears if the Parent File is set to None.
          This allows you to do a lookup based on a custom relationship between
          files. What is required here is an expression that links up to three
          fields in the Lookup file to corresponding fields in the parent file.
          In other words, supposing the parent file is Invoice and the file to
          do the lookup on is Customers, it needs to have the following format:
      CUS:CField1 = INV:IField1
      
      or
      
      CUS:CField1 = INV:IField1 and CUS:CField2 = INV:IField2
      
      or
      
      CUS:CField1 = INV:IField1 and CUS:CField2 = INV:IField2 and CUS:CField3 =
      INV:IField3
      
      You also need to make sure that there is a key in the Lookup file that
      contains each of the lookup fields used in the expression. Otherwise, the
      lookup will not work.
      
      
Calculations
      
        - Calc Name: The name of the calculation.
          You may call it whatever you like. 
- If: A condition for the calculation. Set
          to 1 if no condition is required. If you are using any variables or
          table fields in this condition, they should be enclosed by angular
          brackets.
- Set: The name of the variable to receive
          the result of the calculation. This variable will have to be declared
          either on the  Global Tab or
          the Local Tab. You may write
          the variable names as in, although putting angular brackets around it
          wont hurt. 
- To: The calculation/expression you would
          like the variable above to be set to. Once again you may use table
          fields or variables, but remember to put angular brackets around them.
        
- Else Set: The name of a variable to set
          if the condition fails. This variable will have to be declared either
          on the  Global Tab or the Local Tab. You may write the
          variable names as in, although putting angular brackets around it wont
          hurt. 
- To: The value to set the Else Set
          variable above to. It can be an expression. Once again you may use
          table fields or variables, but remember to put angular brackets around
          them. 
Details, Headers, Footers and Forms 
      
        - Detail/Header/Footer Name: A descriptive
          name for this band. 
-  Suppress If Block Empty:
          This is only valid for bands that appear between a Block Start
          and Block End statement. What this means is that this band should be
          printed only if other bands within the block that don't
          have this option ticked have been printed. A Suppressed detail is
          indicated in the 
            Report Structure List by putting a star next to it. See the  section on Blocks in a Report
          for more info. 
- Block Start: This
          band is the start of a block. See the Suppress
            If Block Empty option above for more info. A Block Start is
          indicated in the 
            Report Structure List by putting a closing angular bracket next
          to it. See the section on Blocks in
            a Report for more info. 
- Block End: This
          band is the end of a block. See the Suppress
            If Block Empty option above for more info. A Block End is
          indicated in the 
            Report Structure List by putting an opening angular bracket next
          to it. See the section on Blocks in
            a Report for more info. 
- Hide: Don't ever print this band. But do
          execute calculations and evaluations relating to this band. 
- Width: The width of this band on the
          report, in pixels.
- Height: The height of this band on the
          report, in pixels.
- Color: The background color of this band.
        
- Condition: A condition under which this
          band should be printed. May be an expression. You may use table fields
          or variables, but remember to put angular brackets around them. Can be
          left blank.
Controls
      
        - Text: (String Controls Only) The text of
          the string control. 
- X Pos: The vertical position of the
          control on the band, in pixels. 
- Y Pos: The horizontal position of the
          control on the band, in pixels. 
- Width: The width of the control on the
          band, in pixels. 
- Height: The height of the control on the
          band, in pixels. 
- Fit Width:
          If this is set, RightReports will adjust the size of the
          control to its contents when the report is printed, and the specified
          Width will be ignored. In particular, you can set this to ensure that
          a string control gets adjusted to the length of its contents when the
          report gets printed. 
- Fit
            Height: If this is set, RightReports will adjust the size of
          the control to its contents when the report is printed, and the
          specified Height will be ignored.
-  Transparent: Whether the control should
          be transparent.
- Background Color: The background color of
          the control. When editing this a color chooser pops up. 
- Foreground Color: The foreground color of
          the control. Only really useful for boxes and lines. When editing this
          a color chooser pops up. 
- Font Typeface: (String Controls Only) The
          font name for the string control. When editing this a font chooser
          pops up. 
- Font Style: (String Controls Only) The
          font style for the string control. When editing this a font chooser
          pops up. 
- Font Charset: (String Controls Only) The
          font name for the string control. When editing this a font chooser
          pops up. 
- Font Size: (String Controls Only) The
          font size for the string control. When editing this a font chooser
          pops up. 
- Font Color: (String Controls Only) The
          color for the string control. When editing this a font chooser pops
          up. 
- Stretched: (Image Controls Only) Whether
          the image should be stretched.
- Centered: (Image Controls Only) Whether
          the image should be centered.
- Tile: (Image Controls Only) Whether the
          image should be tiled.
- File: (Image Controls Only) The file name
          for the image to display here. Note that the image file has to be in
          the application directory. For now. 
- Line Width: (Line and Box Controls Only) The
          line width to use when drawing the line or box. In pixels.
- Picture:
            (String Controls Only) A picture to use for displaying the
          string.
- Justify:
            (String Controls Only) Choose whether you want the string to
          be left, right or center justified within in the control. 
- Fit to Width: When the report is printed,
          this string field will be made long enough to ensure that all the text
          (after fields values, etc. have been evaluated) is printed.
- Fit to Height: Same as above, but for
          height.
- Text Box: This is
          mainly for use with data source fields that are very long. You will
          not see the difference on the editor, but when this field is printed
          on the report, it will be printed as a text box.
- RTF: In the case that
          Text Box above is on, this enables Rich Text Format. Again, you will
          not see the difference in the editor, only on the printed report. It
          is for use with dictionary file fields that have RTF enabled.
Advanced
        Report-Editing Things
      
        Blocks in a Report 
        A classical example of a Block in a report would be the following:
        
        Suppose you had a secondary loop through Purchased Items for a report on
        Invoices. For each invoice, you want to print a header, the Purchased
        Items relating to that Invoice, and then the invoice footer. Naturally,
        if there are no Purchased Items relating to an Invoice, because they for
        example have been filtered out, you wouldn't want that entire invoice to
        print. To achieve this, you would make the invoice header the
          Block Start and 
Suppress
        it, and the invoice footer the 
Block
          End and 
Suppress that
        too. The actual band with the Purchased Item info on it, however, should
        be left alone.
        
        The effect that this will have is the following: If there is at least
        one record in the secondary loop that does not get filtered out and its
        associating detail prints, all the details within the block will print.
        However, if there are no valid records and hence no details for
        Purchased Items print, none of the other details (i.e. the invoice
        header and footer) will print either. 
        
        In your 
Report Structure
          List, this scenario would look something like the following:
        
        
 
        
        The stars represents bands with "Suppress if Block Empty" switched on,
        the closing angular bracket indicates a block start, and the opening
        angular bracket indicates a block end. 
        
Functions
          and Variables in the Report 
        As was mentioned above in the section on the 
          Property Editor, you can add variables to your report using the 
 Global and 
Local
          tabs. Placing the name of this variable in angular brackets in a
        string on the report then causes the value of the variable to print out
        when the report is printed.
        
        Note that there are three types of variables:
        
          - User: When the report is printed, the
            user will be prompted on the PrintReport screen for the values of
            these variables before printing starts. The value for the prompt
            should be entered in the Else Value field in the list. You can
            specify the initial value for this variable in the Value field.
            NOTE: Create a lookup for these user variables on the 
              The_RightReportsPrintControls_Control_template
- Computed: These variables are computed
            either by Totaling, Calculations, or they contain the values
            specified in the Value field in the list. The value in the Value
            field can be an expression, and can contain calls to functions
            available on the Functions Tab.
- Conditional: Here you can specify a
            Condition, Value and Else Value.
        If you want functions to be available to the user at runtime, you need
        to take the following steps:
        
          - Create the function in your application.
- Global Extension, and to the Custom
              Functions Tab.
- Add your procedure to this list.
        There are already a number of built-in functions that ship with
        RightReports. Since they are already loaded they're descriptions can be
        viewed as usual on the 
Functions
          Tab.
        
        
Tip: Say you have created your own clip
        function, called MyClip, and want this function to be called whenever
        the user calls clip. You will notice that Clip has already been bound by
        RightReports (to the usual Clarion Clip function). You need to make sure
        you 
unbind clip before binding it. So your
        code in the RightReportsBind embed point would be
        
        
UnBind (clip)
        Bind(clip , MyClip)
        
        Another Tip: Your custom function
        needs to take 
only string parameters, and it
        can only return strings, too. This is a limitation brought about by the
        Clarion Bind() procedure. 
        
Built in Functions
        
          
            
              | FunctionName | Description | Example | 
            
              | ABS | Returns the absolute value of a variable's contents | abs(<MyVariable>) | 
            
              | INT | Returns the integer value of a decimal | int(<MyDecimal>) | 
            
              | CHANGED | Returns if a variable has changed (1) or not (0). NOTE: You must use quotes for the variable name to be checked
                and the variable cannot be a run-time variable, it must be a
                compiled variable (like a field in a file).
 | changed('MyVariable') | 
            
              | HEADER | Returns if a variable has changed (1) or not (0) (first
                instance is returned as a change). NOTE: You must use quotes for the variable name to be checked
                and the variable cannot be a run-time variable, it must be a
                compiled variable (like a field in a file).
 | header('MyVariable') | 
            
              | CHR | Returns the ASCII string character of the ASCII value passed
                (valid numbers are 0 -255) | chr(<MyNumber>) | 
            
              | CLIP | Returns a clipped variable (i.e. removes the trailing spaces
                in a string) | clip(<MyVariable>) | 
            
              | CLOCK | Returns the current time (in clarion time - i.e. hseconds
                after midnight) | clock() | 
            
              | TODAY | Returns the current date in clarion date (i.e. number of days
                after 1 Jan 1800 + 3) | today() | 
            
              | ALL | Returns a string of repeated characters, where the first
                parameter is the character, and the next is the number of repeats.
 | all(<MyCharvar>,<NoOfChars>) | 
            
              | RIGHT | Right justifies a string | right(<MyVariable>) | 
            
              | CENTRE/CENTER | Centre justifies a string | centre(<MyVariable>) | 
            
              | DAY | Return the day of month from a date | day(<MyDateVar>) | 
            
              | MONTH | Returns the month from a date | month(<MyDateVar>) | 
            
              | YEAR | Returns the year portion of a date. | year(<MyDateVar>) | 
            
              | LEFT | Left justifies a string. | left(<MyVariable>) | 
            
              | DOW | Returns the day of week (0 for Sunday through 6 for Saturday) | dow(<MyDateVar>) | 
            
              | DATE | Returns a clarion date from a passed month, day and year | date(<MyMonthVar>,<MyDayVar>, <MyYearVar>)
 | 
            
              | BEGINSWITH | Returns 1 if a string begins with a set of characters | beginswith(<MyStringVar>,<MyCharsVar>) | 
            
              | CONTAINS | Returns 1 if a string contains a set of characters | contains(<MyStringVar>,<MyCharsVar>) | 
            
              | ENDSWITH | Returns 1 if a string ends with a set of characters | endswith(<MyStringVar>,<MyCharsVar>) | 
          
        
        You can add your own custom functions to be used in reports. You must
        create the function, and then add it to the list in the rightreports
        global template's list of functions. It will then be available for
        report editing, and when printing a report. (see 
GloCustomFunctionsTab)
        
        
Printing
          Variable and Field Values 
        Putting angular brackets around a word indicates to the report printing
        engine that this is possibly a 
 local or 
          global variable (see the 
 Property
          Editor), or a field in one of your report tables. When printing
        the report, RightReports will replace that part of the string with the
        current value of the variable, or with the value in the field of the
        current record in the table.
        
        You can find all the local and global variables available to this report
        on the 
 Local and 
 Global
          tabs of the 
 Property Editor. All
        the fields of the tables used in your report can be seen on the Fields
        Tab of the 
 Property Editor. If your
        report is a Graphic report, you can drag and drop these fields onto any
        report band in the 
 Graphic Band Editor
        above the field list.
        
        
 Built-In
          Keywords
        There are some built-in keywords such that if they are encountered in a
        string in angle brackets, RightReports will perform a certain action.
        The are essentially 
variables
        and are treated in exactly the same way. The following are examples:
        
          - <formfeed>: When RightReports
            runs into this, it immediately starts a new page. For text reports
            it starts a new page immediately and prints the remainder of the
            band its on on the next page. For graphic reports, it finishes
            printing the current band before starting a new page.
- <page>: This will be replaced by
            the current page number. 
- <linenumber>: Only for text reports.
            This will be replaced by the current line number on the page. 
 Renaming
          Table Fields 
        Suppose one of your table fields has a name that obscures its meaning,
        such as INV:rn, which stands for the invoice number. It is possible for
        users to see and use an alternative name in the report editor, which
        may, for example, be more descriptive and hence easier to work with,
        such as INV:InvoiceNumber. To do this, take the following steps:
        
          - Go to the table field in your Dictionary
- Go to the User Options of that field
- Enter a new option called RRName and set it to whatever you would
            like the field to appear and be used as in the Graphic Report Editor
 
      Report and
        Table Access Issues
      
        Excluding Tables and
          Fields from the Files List
        There will quite possibly be some tables in your dictionary that you
        want to hide from the users on the 
          Fields Tab of the Report Editor. The way to do this is as follows:
        
          - Go to the table in your dictionary
- Right-click and choose Properties
- Go to the Options Tab
- Insert a property called NoReports and set its value to 1
- Recompile your app
        Once you have suppressed a table in your dictionary in this way, you can
        unsuppressed it by going to the 
Files
          Tab on the Global Extension. You will see that it is also possible
        to suppress files that have not been suppressed in the dictionary here.
        
        In order to suppress specific fields of a given table in your
        dictionary, the process is the same as the above. You can just follow
        the five steps mentioned above to add the NoReports user option to the
        table field in your dictionary. NOTE: Overed fields are automatically
        suppressed.
        
        
Preventing Users from
          Editing a Report
        It is possible to prevent users from editing a report by setting the
        EditAccess property in the RRDefinition file to a value greater than 0.
        If this is the case for a report, the Update window will open in
        view-only mode. The way the value of RRDFN:EditAccess is determined is
        left up to the programmer, and it is, for obvious reasons, not included
        in the Properties List for the report on the editor.
        
Preventing
          Access to Table Records
        It is also possible to prevent a user from accessing certain records in
        the report tables when printing the report. In fact, it is possible to
        filter out any records of any table that the report loops through. To do
        this, you need to take the following steps:
        
          - Go to the RightReportsPrint procedure
- Look for: ThisPrinter.CallNextRecord - Inside Loop
- Expand this tree and look for the file you want to filter
-  Insert some filtering code. It may look something like this:  if fil:fieldname < 0 then cycle.
        The code you are embedding into looks like this:
        
        
 loop
             CallResult = self.NextRecord()
             !Embed code here to filter out records
             if CallResult
               ReturnValue = CallResult
               break
             end
             if 0
             elsif self.CurrentDataSource.Name = 'MyFile'
                !Your embed point is here 
                if fil:FieldName < 0 then cycle.
             elsif self.CurrentDataSource.Name = 'MyFile2'
             end
             ReturnValue = 0
             break
           end 
        
        So basically this allows you to loop until you find an unfiltered
        record. You can even set the ReturnValue to a non-zero value to stop the
        processing of the current file completely. 
 
      The Report Output
      
         The Report
          Previewer 
        As can be seen on the 
          Global General Tab, it is possible to choose a previewer for your
        generated reports besides the default RightReports or ABC ones. The way
        to go about using such a 3rdparty previewer depends on the product, but
        the general idea is as follows:
        
          - Add the Global Extension for the specific 3rdparty reporting tool
            who's previewer you want to use
- Select the desired previewing tool on the 
              Global General Tab, under Previewer.
- There will possibly appear a new tab on the RightReports global
            extension, next to the General Tab - fill in the necessary details
            here. 
 
 
        
        At the moment RightReports supports the IceTips, CPCS, ABC and
        RightReports-built-in report previewers. It is also possible to hand
        code your own call to a previewer (like RPM), should you wish to choose
        that option.
        
The
          RightReportsPrint Procedure 
        RightReportsPrint is the procedure responsible for printing the report
        created by the report editor. It also provides an interface for the user
        to setup some options that the report requires (like user variables used
        for filtering records). The RightReportsPrint procedure is imported as a
        window procedure with a Control template added to populate the necessary
        code. There are a number of options for the template, discussed in the 
RightReportsPrintControls
        template section of this doc.
        
        For example, 
you want to use your own Report
          Previewer. In this case, you could hand-code the call to the
        previewer yourself. Choose the Hand code option on the 
General
          Tab of the Global Extension, and follow the instructions laid out
        on the Hand coded Previewer tab that appears. Alternatively, you can do
        a search in the RightReportsPrint procedure for RightReportsPreview. You
        can replace this function call with your own.
        
Entering User variables
        The user variables created for a report (in the local or global tabs) -
        will be displayed here at runtime, allowing the user to enter values for
        these user variables.
        
Printing to a PDF File 
        As you saw on the
          RightReportsPrint Window, you can choose to output your report to
        a number of formats. One possibility is to output to PDF. To enable
        this, you need to take the following steps:
        
          - Make sure you have abprpdf.inc and abprpdf.clw somewhere in your
            path. This class ships with Clarion 6 Enterprise Edition, but not
            with Professional edition.
- Go to the Global
              General Tab on the RightReports Global Extension, tick the
            Enable printing to PDF checkbox. 
- Add the Report to PDFGlobal Extension template. (See also Step
              8 of the Jumpstart)
Printing to Word and Excel 
        As was mentioned before, it is possible to output to a number of
        different formats. Among these is the possibility to send the report
        output to a Microsoft Office Excel or Word file. Note that you need 
          CapeSoft Office Inside version 2.63 or later. To enable this
        feature you need to take the following steps: 
        
          - Add the Office Inside Global Extension to your application.
- Note: If you are using Legacy,
            you need to enable the "Enable the use of ABC classes" checkbox on
            the Classes Tab of the Global Properties of your app. 
- (See also Step 8 of the Jumpstart)
        If you would like the user to preview the output document automatically,
        then you need to add the HyperActive global extension template to your
        application as well. 
 
      Importing and
        Exporting Reports
      
        Importing and
          Exporting a RightReports Report
        It is possible for you to export a Report from RightReports into an XML
        format, and to import such a report again too. The idea here is to make
        reports portable. For example, this feature enables you to export a
        report, send the resulting XML file to a client, and he or she can then
        import the report into their system with minimal fuss. In addition, by
        exporting a report, you ensure that you have a saved copy in case you
        need to revert back to it for whatever reason. Re-importing an exported
        report also mimics the copy-paste action. 
        
        Note that this feature requires require 
          XFiless1.61 or later1.61 or later. To enable this feature, you
        need to take the following steps:
        
          - Import the RRImportExportABC.txa (or ImportExportLegacy.txa) file
            into your application
- Add the global xFilessExtension to your application.Extension to
            your application. 
- The RightReportsImport and RightReportsExport procedures each has
            a RightReports Extension that generates the necessary code. They
            look something like this:
 
        
        There is one option allowing to to control which reports may be imported
        into your program. If an exported report does not have this identifier,
        importing it will fail. The idea is that programs with different
        dictionaries will clearly not be able to support the same reports.
        Hence, using the dictionary name here seems like a good idea.
        
Importing Reports from a TXR
          File 
        RightReports can import reports that were created using Clarion's Report
        Writer with ease. To enable this feature, you need to take the following
        steps:
        
          - The RightReportsImportTXR procedure is imported when you import
            the RightReportsFunctions.txa file.
- You just need to call this procedure from an applicable place in
            your application.
        This procedure merely opens a window asking the user to specify the
        relevant TXR file before importing all the reports in that TXR into the
        RightReports report database. These reports then become available in the
        RightReportsBrowse, and can be edited and printed as usual RightReports
        reports from this point on. 
 
      Advanced: Embed Points
      Embed Points for the Enthusiastic Coder
      The RightReportsPrint class generates a number of procedures into the
      RightReportsPrint procedure where you can embed some of your own code.
      
      
        
          
            | Method Name | When Called | Examples of Uses | 
          
            | AddCustomFunctions | In general code will be generated into this procedure by the
              template. See  the Section on
                Functions and Variables.. | You can embed code here if you want to add some custom functions
              to make available to the user. | 
          
            | AfterInitalise | This method is called after all the initialization for printing
              is complete. | Place any of your own initialization code here. | 
          
            | AfterPrinting | This method is called once all the printing is done and the
              preview has been displayed. | 
 | 
          
            | AfterWaitWindowOpen | Embed any code in here you would like to execute after the
              Progress Window has opened. | For example, if you want to make changes to the window to suit
              your applications, e.g. adding Makeover,
              now would be the time. | 
          
            | BeforeAssigningSource | Before the records of a data source are processed, certain
              actions may need to be performed on that data source. Embed code
              to do that here. This method is called after the source was
              opened, but before a set (with a key) has been done on it. | A queue that may be of interest here is the SavQ.
              This would be a good time to save the state of
                your data source should you want to do this. Your embed
              code would look like this: 
 if lower(self.SavQ.savFileName) =
                'employee'
 self.SavQ.savState = Access:Employee.SaveFile()
 end
 
 | 
          
            | NextRecordFound | This gets called every time a new record to process has been
              successfully fetched. These record have survived testing against
              all the filters, including the primary
              and  secondary report filters. | This is your last opportunity to filter
                this record out, and you can do this by setting the
              return value to 1. | 
          
            | BeforePoppingSource | This gets called just before the data source currently being
              processed gets popped off the SavQ
              stack. | 
 | 
          
            | BeforePrintFileStart | This is called after the print button is pressed but before the
              actual processing of the data sources starts. This method is
              called before the data sources for this report are opened, but
              after the output type (as chosen by the user on the window) has
              been determined. | 
 | 
          
            | BeforeOutputCase | After the print button is pressed, RightReports determines which
              printing option is called. This procedure is called before this
              case statement. | 
 | 
          
            | BeforeViewOpen | As the name suggests, this method is called before a data
              source that is a view is opened. If the user has chosen a key for
              the primary file of the view, it is passed as a parameter. The
              parent call then sets the primary file with this key - you do not
              have to do this yourself (provided the user chose a key in the
              editor). 
 Remember that in the print procedure, all Files are handled as
              Views - see the section on Files and
                Views in the Print Procedure.
 | You can place any of your own code to prepare the view or the
              primary file of the view here. | 
          
            | CallNextRecord | RightReports uses this procedure to call the NextRecord
              procedure, which fetches the next record in the current data
              source. If NextRecord returns a value > 0, it means the fetch
              failed, and contains the error code. 1 means that some internal
              error occurred while trying to access the data source in
              RightReports. In either case it will be assumed that the end of
              the data source was reached. 
 NNote that, unlike in the case of NextRecordFound,
              the report filter has not yet been applied to this record
              (although all server-side and SQL filters have).
 | If the fetch is successful, you can use this procedure to filter out any unwanted records. An if statement is generated with embed
              points for each of your data sources. You can check any fields in
              your data source and cycle should
              you want this record to be skipped. | 
          
            | Initalise | This procedure is called to do some routine initialization
              tasks when the print window is opened. | Place any of your own initialization code here. Placing code
              after the parent call is the same as placing code in the 
                AfterInitalise procedure. | 
          
            | InNextLoop | After CallNextRecord has returned
              its value to the Print procedure, the return value is evaluated.
              If the return value is 0, this record will continue to be
              processed. InNextLoop is called before any processing on the
              record continues. 
 Note that, unlike in the case of NextRecordFound,
              the report filter has not yet been applied to this record
              (although all server-side and SQL filters have).
 | 
 | 
          
            | PostShowPriSortQueue | This method is called after the Primary Sort Queue is
              displayed. The latter will only appear if the user has chosen
              'User Selects' for the Primary Sort. | Embed code here if you want to move some controls around on the
               Print Window. | 
          
            | PostInitalise | This method is called during (towards the end of) the 
                Initialize method. It is called before 
                AfterInitalise. | Mostly for internal use. Code to prime the user variable prompts
              and load the classification queue is generated into this method. | 
          
            | PreInitalise | This is called before the  Initialize
              method is called. | Embedding code here has the same effect as embedding code before
              the parent call in Initialize. | 
          
            | PrimeUserPromptsAuto | When the Print Window is
              opened, the prompts for the user report variables are populated.
              If the second character of a report variable's picture is 'G',
              this procedure is called. No user prompts or entries for such a
              variable will appear on the print window. | You may have placed a prompt and entry of your own on the
              window. If this is the case, now is the time to populate the
              prompt and entry with your desired values. 
 Only for very advanced programming.
 | 
          
            | RRBind | This procedure binds the functions listed on the Global
                Functions Tab - code is generated to do this. | If for some reason you want to bind some of your own functions,
              or even application variables (see the FAQ
                item on this topic) for use in reports, you may do this
              here. Don't forget to unbind them using RRUnbind below. | 
          
            | RRUnbind | This procedure unbinds the functions listed on the Global
                Functions Tab - code is generated to do this. | Unbind whatever you bound yourself using RRBind above. | 
          
            | SaveCRISCHUserPrompts | Internal use. | 
 | 
          
            | SetClassification | Used for classification purposes, not yet implemented. | 
 | 
          
            | ShowPriSortQueue | This method contains generated code that handles the display
              settings for the Primary Sort Queue on the print window. This
              dropdown only appears if the user has chosen 'User Selects' for
              the  Primary Sort. | Embed code here should you wish to make any changes to the
              contents of the PriSortQ or the way it is displayed. | 
        
      
      Class Properties of Interest
      
        
          
            | Field Name | Type | Description | 
          
            | savQ | Queue | This queue is a member of the RightReportsPrint class,
              responsible for printing the report. It acts as a stack onto which
              and from which the data sources of your report are pushed and
              popped. Thus, the primary source will be the first record, and the
              data source currently being read is at position records(self.SavQ)..
              When all the records in the relationship have been processed, the
              data source is popped off. When the next record in the parent file
              is read, this data source will be pushed back onto the stack and
              all the related records read. This stack directly resembles the Report Structure Tree you see in
              the editor, except that it only contains the data sources before
              the current one, not the ones after. | 
          
            | savFileName | string(20) | Name of the data source. | 
          
            | savLevel | short | Level at which this data source is. Level 0 is a primary file, a
              secondary loop would be at level 1, a secondary loop with the
              latter as parent will be at level 2, etc. | 
          
            | savofq | long | Internal use. | 
          
            | savFilter | string(1024) | The report filter you entered for this data source (see Primary
              or Secondary filter) | 
          
            | savHostName | string(25) | The name of the parent data source. | 
          
            | savRange | string(1024) | Internal use. | 
          
            | savState | ushort | The Save State of this data source. You can set this by
              embedding code in 
                BeforeAssigningSource. | 
          
            | SavServerFilter | string(1024) | The server-side filter for this data source. Only for files and
              views. | 
          
            | SavServerOrder | string(1024) | The server-side order fields for this data source. Only for
              files and views. | 
          
            | SavSQLFilter | string(1024) | The SQL filter for this data source. Only for files and views. | 
          
            | SavSQLOrder | string(1024) | The SQL order fields for this data source. Only for files and
              views. | 
          
            | 
 | end | 
 | 
        
      
      Files and Views in the Print Procedures
      It may be of interest to note that for the editor, a data source of type
      file remains a file. However, in the 
Print
        Procedure, a view is declared with the file as primary file, and
      this view is used to print the report. This is to allow the user to
      specify a 
server-side filter and order
        fields for the file, without having to create a new key.
      
      If your file's name is MyFile, the view will be called RRDFView:MyFile.
      However, the name of the data source will still be the same as that of the
      original file, namely MyFile. Hence, for example, should you need to
      access the data source in the 
SavQ stack, you
      will still need to use MyFile as the data source name.
      
      It is also important to note that all files will be treated as views in
      the 
Print Procedure. For example, 
BeforeViewOpen
      will be called for every View AND File. 
Tips & FAQ
    
      Question Summary
      I'm getting 
Compile Errors or 
Runtime Errors
      
      Importing Issues (Procedure and
        TXD issues)
      
      Programming Issues
      
      Writing Reports
      
      Getting Started: Check out 
        ClarionLive webinar 136
      
        - After closing and reopening
            the app, the image filename is still in the properties but no image
            is displayed in the designer or on the preview or printed on the
            report. If I reselect the image file in the designer, then it
            appears again.
- I have a file that I want
            to use as a secondary loop that is not related to the Primary Source
            in the dictionary explicitly. 
- I have a report that
            reports on the Clocking's file. I want some users to not have access
            to certain records in the Clocking's file when printing the report,
            i.e. I want certain records to be omitted from the report for
            certain users. How do I do this? 
- I want to group certain
            reports together and only display a given group in the reports
            browse. 
- When I add a new report, the data in the
            Properties box is nonsensical, e.g. the report number is huge.
- How do I add today's date, or the time, to my
            report?
- Can I use a global variable in my application
            on a report? How?
- Sometimes I open the editor window, and the
            controls are completely off the screen
- I have defined a view in the template, but
            the Order By is requesting a key select, not a list of fields.
- After selecting the Primary File
            when creating a report, none of the keys are available in the
            drop-down.
- In SQL, there are "Server Order"
            and "SQL Order" fields. Which should I use?
- How do I create a Report Header (i.e. a
            header that only prints once per report)?
- How do I create a Report footer (i.e. a
            footer that only prints once per report)?
Printing Reports
      
      Runtime Errors
      
       Compile ErrorsImporting Issues (Procedure and TXD
        issues)
      
      
        - Tips for using File Manager 3
            (or File Manager 2) and RightReports in your application. If
          you are making use of FM2 or FM3 in your application, you must not
          forget to add the Version option to each of the imported RightReports
          tables on (right-click on the table, choose Properties, go to the
          Options Tab and enter an option called Version set to the value 1).
        - When I open my app, I
            get an "Unknown Template Type (EditInPlace) " type error. You
          can ignore this error, as this template is no longer required. You
          probably created your RightReports enabled application with an early
          version of RightReports, prior this template being included into the
          RightReports template.
        - How
            do I incorporate RightReports table changes into my dictionary?
          You can either make the changes yourself in the RightReports tables in
          your dictionary, or take the below steps. Either way, don't forget to
          up the version number if you are using FM3.
          
            - Delete the RR tables from your dictionary.
- Re-import the RightReportsTables.TXD file.
- Open your Application.
- Re-Import the RightReportsFunctionsABC.txa (or
              RightReportsFunctionsLegacy.txa) file
 
          - If you get compile errors: Go to the
            Global Extensions. Take a look at each of the table tabs. Some of
            the fields may have disappeared and you will need to re-enter them.
            If you have changed some of the imported RightReports table or field
            names, you will need to re-enter them here too.
Programming Issues
      
        - Since we have thousands of fields and over 220
            tables, looking at field descriptions one at a time is too slow. I
            need to get at the field queue and change the description just after
            the field queue is built. You can embed code after the queue
          was built to edit the field descriptions yourself. The embed point is
          called "End of BuildFilesQ Routine" and is at the end of the
          BuildFilesQ routine. The ThisRightReportsTree1.FilesQ definition is as
          follows:
 
 FilesQ            QUEUE,PRE(),
            THREAD
 FilesQ.Display         STRING()
 FilesQ.Level           LONG
 FilesQ.FileName        STRING()
 FilesQ.FieldName       STRING()
 FilesQ.FieldDetails    STRING()
 END
 
 The field and table names are stored in the
            Display field, the field names in FieldName,
          and the table name in FileName. The
          field descriptions are stored in FieldDetails.
          You would hence probably want to do a fetch based on FileName
          or FileName, and edit the Display
          and  FieldDetails properties to suit
          your needs.
        - I need to
            change the file queue description to contain both field name and
            field description. That way you can see the description of the field
            as you scroll down the list, rather than having to stop at each
            field to look. The FilesQ is displayed in an ordinary listbox
          on the  RightReportsUpdate
          window. You can hence set up this listbox in the Clarion window editor
          as you would like it. See the 
            question on editing the field descriptions on above for more
          information on how to work with the queue that populates the listbox.
        
        - What's with the large
            amount of Local and Global data being populated by RightReports? A
          lot of data was populated by the older versions of RightReports, most
          of which has become obsolete. You can delete the Global Data, and the
          Local Data in the RightReportsUpdate procedure. They are not difficult
          to identify as the variable names start with RR. Don't worry - If you
          delete something the template needs, it will be put back in by the
          template.
        - Where did all my global
            embed code go? Since version 1.08 of RightReports was
          released, alot of the global RightReports procedures have been
          incorporated into classes. Hence, unfortunately, many of the global
          embed points have disappeared. These have now been made available at
          the local level, in the RightReportsPrint and RightReportsUpdate
          procedures. Unfortunately you need to copy the code from these old,
          now orphaned, embed points to the new ones. Here is a list of the old
          embed points and where to find them now:
        
          
            | Old Global Embed Point(s) | New Location(s) | 
          
            | AddCustomFunctions | Can be found in the local AddCustomFunctions
              procedure in both the Print and the Update procedures. Fortunately, you no
              longer need to hand-code these additions - you can add them on the
              Global Custom Functions Tab. This also removes the need to do it
              twice. | 
          
            | RightReportsNextSavFile | Can be found in the local CallNextRecord
              procedure in the Print procedure. | 
          
            | RightReportsBuildLookupList | Can be found in the local BuildLookupList
              procedures in both the Print and Update procedures. | 
          
            | RightReportsBuildOrderList | Can be found in the local BuildOrderList
              procedures in both the Print and Update procedures. | 
          
            | RightReportsBuildSecondaryList | Can be found in the local BuildSecondaryList
              procedures in both the Print and Update procedures. | 
          
            | RightReportsSetRangePrompts | Can be found in the local SetRangePrompts
              procedures in both the Print and Update procedures. | 
          
            | RightReportsSetFilePosProc | Can be found in the local SetSecondary
              procedures in the Print procedure. | 
          
            | RightReportsBind | Can be found in the local RRBind
              procedure in the Print procedure. | 
          
            | RightReportsUnbind | Can be found in the local RRUnbind
              procedure in the Print procedure. | 
        
      
      
        - How do I print a report
            without going to the Reports Browse? There are two things
          that are needed here: 
 -Make sure that the correct record (report) has been fetched in the
          RRDefinition file. You can either use RRDFN:CodeKey (a key on the
          RRDFN:DefnCode field), or RRDFN:DescKey for this.
 -Then call RightReportsPrint(0).
 - So, for example, your code could look something like this:
RRDFN:DefnCode = 3
        Access:RRDefinition.Fetch(RRDFN:CodeKey)
        RightReportsPrint(0)
      
        - I'm using the
            RightReportsPreviewer - but PageUp and PageDown don't select the
            next (and previous) pages of the report. In your application,
          go to the RightReportsPremier procedure, and for each of the buttons,
          associate the correct key (in the Window Formatter - right click on
          the button, select key and enter the key you want to associate with
          that button).
- How do I implement
            RightReports into a NetTalkWebServer application? You need to
          follow the steps in the JumpStart, taking note
          of the caveats for WebServer applications (particularly Steps 3, 4 and
          7). If you are getting a compile error on the RightReportsPrint
          procedure, you need to ensure that your prototype and parameters are:
          (long defn,<string pOptions>,<NetWebServerWorker p_web>)
- How do I add Word/Excel
            output support to my application? First you need to add the
          OfficeInside template to your application. Then you need to go to the
          RightReportsPremier procedure, and open up
          the window in the window formatter, and from the Populate
          menu, select control template. Select the RightReports Print Previewer Output and place
          the button in your Output group on the
          window. Right-click on the button and choose Actions.
          Set the Output To:  to DOC. Repeat the
          control template insertion for XLS support.
- How do I use PDFTools to
            generate my report output? Follow the steps in 
            Add_outputs_to_the_Previewer_window that pertain to the
          PDF-Tools report to PDF generator.
- My totals
            don't delete after I close (and re-open) the report editor.
          You must re-import the txa. You have an old version of the imported
          RightReportsUpdate procedure in your application.
- How do I create a browse
            lookup for the user variable on my Print Options window?
          You'll need to go to the RightReports Print Controls control template
          on the RightReportsPrint window, and enter the name of the variable
          (that will be the runtime user variable that is created in your
          Report), the name of the lookup procedure to call, and the field
          containing the variable (if the lookup is a browse, otherwise it
          should return the value for the user variable). See 
            The_RightReportsPrintControls_Control_template for details.
          You'd create the user variable as:
 
  
- How do I use the
            RightReportsPreviewer for my SendTo report? You need to
          redirect the preview to the RightReportsPreviewer in the
          SendTo_Printer procedure. We do this in the AskPreview method as
          follows:
 
  
Writing Reports
      
        - After closing and
            reopening the app, the image filename is still in the properties but
            no image is displayed in the designer or on the preview or printed
            on the report. If I reselect the image file in the designer, then it
            appears again. For the moment, RightReports does not save the
          path of the image, so your image has to be in your application
          directory. 
        - I
            have a file that I want to use as a secondary loop that is not
            related to the Primary Source in the dictionary explicitly. The
          happy news is that this is entirely possible using a simple trick.
          What you do is for the parent file of the secondary loop, choose
          "None". Then just enter a filter for this secondary loop that
          describes the relationship between the Primary Source and this
          Secondary Source. For example, suppose you had a Customers file and an
          Invoice file in the dictionary that weren't related, but the Invoice
          file had a CustomerNumber field. Then you would enter for the filter
          something along the lines of: "INV:CustomerNumber = CUS:RecordNumber".
        - I
            have a report that reports on the Clockings file. I want some users
            to not have access to certain records in the Clockings file when
            printing the report, i.e. I want certain records to be omitted from
            the report for certain users. How do I do this? See the
          Section on 
            Preventing Access to Table Records. 
        - I
            want to group certain reports together and only display a given
            group in the reports browse. You can use the ReportType
          property to assign a group number to each report. You can then filter
          the RightReportsBrowse
          according to this ReportType field. 
        - When I add a new report,
            the data in the Properties box is nonsensical, e.g. the report
            number is huge. This probably means you are using an SQL
          backend, and you imported the RightReportsTables.txd file. When it
          asks you to change the Notes memo in RRDefinition to a String, you can
          do so (make it any size you want, we recommend 1024 or larger), but
          move it to the end of the record. 
        - How do I add today's
            date, or the time, to my report? 
 - Create a report variable (the best would be to make it global
          so all reports can use it), lets call it TodayVar.
 - Make the type Computed.
 - Then, in the value column, enter: Today().
 - Put the variable on your report somewhere.
 - Same for time: use Clock().
        - Can I use a global
            variable in my application on a report? How?
          
 - Create a report variable, say GloReportVar (global would be best,
          as then you could use it in all reports)
 - Make its type Computed.
 - In the Value column, write the name of your global application
          variable, say MyGloVar (NO QUOTES).
 - Put the GloReportVar on your report (in angle brackets).
 - Then, go to the RightReportsPrint Procedure, and look for RRBind.
 - In the embed point, put: bind('MyGloVar', MyGloVar).
 - In RRUnbind, write: Unbind('MyGloVar').
- Sometimes I open the
            editor window, and the controls are completely off the screen
 - Make sure that you have the 'Save and Restore Window
          Location' checkbox turned off (in the Window Behavior template section
          for the RightReportsUpdate window). RightReports uses it's own window
          size restore.
- I have defined a view
            in the template, but the Order By is requesting a key select, not a
            list of fields.
 - Re-Import the TXAs, or modify the EIP template on the PropertiesList
          (Overrides tab - Function Calls) to include a case for entering the
          fields using the formula window: Condition = ThisRightReportsTree6.PropertiesQ.code
            = RRPRI:Orderby and ThisRightReportsTree6.PropertiesQ.EIEditType = 5,
          and Function Call = do RRCallEditFormula. You will also need
          to modify the condition on the Drop down list options. Change the ThisRightReportsTree6.PropertiesQ.code
            = RRPRI:Orderby condition to 
            ThisRightReportsTree6.PropertiesQ.code = RRPRI:Orderby and
            ThisRightReportsTree6.PropertiesQ.EIEditType = 3
-  After
            selecting the Primary File when creating a report, none of the keys
            are available in the drop-down.
 You need to save the report after selecting the primary file. When you
          come back into the report, the keys will be refreshed.
-  In SQL,
            there are "Server Order" and "SQL Order" fields. Which should I use?
 You can only use one. Don't use both. The Server Order is the clarion
          named fields (such as CUS:CustomerCode), whereas the SQL Order fields
          are the field names as they appear on the SQL backend (such as
          dbo.cus_customercode).
- How do I create a
            Report Header (i.e. a header that only prints once per report)?
 First create a runtime variable (You can create a global variable if
          you'll do this for most of your reports). Call it something like
          ReportHeaderPrinted.
 Next, create the detail band right at the top of the primary file loop
          with a condition: <ReportHeaderPrinted>=0
 Then create a calculation immediately after that:
  
- How do I create a
            Report footer (i.e. a footer that only prints once per report)?
 Create a detail band and put it after (out of) the primary file loop:
  
Printing Reports
      
        - I added a Footer to the
            Report - but it is not printing. This normally happens when
          people add a detail band (not associated with a loop) and not a Footer
          band. Remove the detail band, and re-add the Footer band, making sure
          that you use the Footer button to add the footer band. A detail band
          must be associated with a parent loop.
- How do I get the order of
            my user variables in the Report Options correct? The
          variables are displayed in alphabetical order using the variable name.
          You can use the first letter of the variable name to determine the
          order of the variables.
- My Report prints super
            small/the font is super large. Check your default printer
          page size. It could be set to a small label (or a large paper size).
          Change it to default to a normal page.
Runtime Errors
      
        -  When opening
            the report Editor, I get a number of errors that are long the lines
            of "No connection string found for dbo.rrdefnfiles". It seems to
            happen for all the imported RightReports tables. The problem
          is more than likely that you are using an SQL backend and you have not
          filled in the Owner fields of the RightReports tables.
-  I use SQL - and when I
            save the report all my report definition is not being saved.
          The DefnCode that links the band to the parent is not being primed
          before the records is added - IOW the children are being added before
          the parent ID has been added (by the parent). I'm guessing that this
          is because you have set your auto-increment to server-side rather than
          client side. If you have to make your auto-increment server-side, then
          you need to insert the record on the way into the form, and do a
          delete on cancel on the way out.
-  In my NTWS application, I
            get an invalid page when printing the report from the
            RightReportsWebPrintOptions page
 You need to change the 'URL on Save' in the
          RightReportsWebPrintOptions window to 'PrintReport'. This is the page
          name on the RightReportsWebPrintReport NetWebPage by default. If you
          have changed this default name, then you need to use that page name in
          the URL on Save. If you've upgraded Nettalk to version 6.40 or higher,
          then you need to change the output name of the pdf file, as the
          default one uses a session ID (which changed to a string in 6.40) as
          follows:
 
  
-  How do I make the Date
            picker button available for my Date user entry controls?
 First, you need to make sure you've selected a date picker in the
          RightReportsPrintControls control template:
 
  
 
 Next, you need to make sure that your user variable (global or local)
          has been defined with a date picture in the Report Editor:
 
  
Compile Errors
      Check out general product 
          CompilerErrors.
      
        - Warning: Level duplicated,
            second used: RRPO:Destination (and 6 others)
 In 1.53, there were some variables that moved from the local
          declaration to the template declaration section. You can simply delete
          those from the local data as they will no longer be needed, or
          alternatively re-import the RightReports windows.
- I get a number of Unresolved
            External errors to do with DrawPaint.
 You need to check the 'Activate DrawImage' and the 'Activate
          DrawPaint' checkboxes on the Draw extension template. If this is a
          multi-dll, then you need to do that in your data dll.
- I get an error: "Unknown
            Identifier RRImportASCII" when compiling my app
 1) Make sure that you imported the RightReports txd file into your
          dct.
 2) Check the "Generate all file declarations" checkbox in your
          application.
- I get compile errors on the
            imported RightReportsWebPrintOptions procedure: You need to set the
            'URL on Cancel' to the procedure that calls the
            RightReportsWebBrowse 
 The RightReportsWebPrintOptions has a cancel button. That cancel
          button must point to the procedure that calls the
          RightReportsWebBrowse procedure, so that when the user clicks the
          cancel button, they will return to the correct procedure. This option
          needs to be set in the RightReportsWebPrintOptions procedure
          properties ( on the 'URL to Cancel' template prompt).
- I get a "No Matching
            prototype" compile error in the RightReportsWebPrintOptions
            procedure calling the RightReportsPrintOptions procedure
 You need to change the parameters and prototype of the
          RightReportsPrintOptions window to include an optional
          NetWebServerWorker p_web parameter as follows:
 (long defn,<string
            pOptions>,<NetWebServerWorker p_web>)
 Making the p_web parameter optional means you can use the same
          procedure in your desktop and NTWS applications, if your RightReports
          procedures are in a dll.
 
    License & Copyright
     This template is copyright 2007-2024 by CapeSoft
      Software. None of the included files may be distributed. Your programs
      which use RightReports can be distributed without any RightReports
      royalties.
      
      Each developer needs his own license to use RightReports (need to 
buy
        more licenses?).
      
      This product is provided as-is. CapeSoft Software and CapeSoft Electronics
      (collectively trading as CapeSoft), their employees and dealers explicitly
      accept no liability for any loss or damages which may occur from using
      this package. Use of this package constitutes agreement with this license.
      This package is used entirely at your own risk. 
      
      Use of this product implies your acceptance of this, along with the
      recognition of the copyright stated above. In no way will CapeSoft , their
      employees or affiliates be liable in any way for any damages or business
      losses you may incur as a direct or indirect result of using this product.
      
      For the full EULA see 
https://capesoft.com/eula.htmlSupport
    
      
        
          
            | CapeSoft Support | 
          
            | Email |   | 
          
            | Telephone | 087 828 0123 +27 87 828 0123
 | 
        
      
      
      
     
     Version History
     Download latest version 
here.
      
      
      
You should be using at least version 4.35 of
        Draw. 
      Download the latest Draw 
here.
      
      
      
Version 2.10 - 27 May 2025 
      
      Version 2.09 - 5 February 2024 
      
        - Update: Make DESTRUCT method compatible with Draw 4.35
- Internal: Update to Capexx.tpw version 4.31
Version 2.08 - 20 October
        2022
        - Fix: Importing of really old XML files (with no prefixes) would fail
          if on xFiles 2.93 or later.
Version 2.07 - 11 February 2022
        - Fix: When Creating details, XPOS and YPOS were not explicitly being
          set to 0. From Clarion 11.1 these values are no longer implicitly set
          to 0.
Version 2.06 - 25 May 2021
      
      Version 2.05 - 3 November 2020
        - Fix: Update to #AT to prevent local method declarations being added
          to global objects.
- Added the ability to select which outputs to support (if all are
          present), and to support basic word export functionality.
- Added support to utilize a word doc template for a header doc.
- Fix: Evaluate a band condition before evaluating the strings in a
          band.
Version 2.04 - 8 September 2020
        - Change: The property ThisDraw type changed from &Draw to
          &DrawClass to be compatible with Draw version 4.22 (to be
          compatible with Clarion 11.0.13622)
Version 2.03 - 12 August 2020
        - Fix: Regression in 2.02 (incorrect disposal of an ANY field)
Version 2.02 - 12 March 2020
        - Change: incorporate generated procedures into the RightReports.clw
          (application_rr.clw no longer generated and included).
- Fix: prior to disposing queues with assigned ANY fields, first set
          the ANYs to null.
- Change: Enable grid (requires Draw 4.21)
- Fix: RightReportsUpdate window was resizing incorrectly after
          deleting or adding a band control.
- Include the aberror.inc in the RightReportsData.inc file
- Fix for not adding debug lines for the debug output when debugging a
          text report.
- When printing a report, prioritize images, then boxes then other
          controls (was printing a box control over a string control).
- Remove old C55 compile omit code.
- Fix incorrect inclusion of aberror.inc in the RightReportsTree.inc
          file
- You can now use EasyResize (with splitter bars) in the
          RightReportsUpdate window (rather than the RightReports resizer).
Version 2.01 - 18 December 2019
        - Fix: Support for Premiere Previewer
Version 2.00 - 25 March 2019
        - Add a default location to export the XML file in the "Export a
          report to an XML file" template.
- In the RightReportsPrint procedure, you can now derive (and
          override) the GetDefaultOutputDirectory for automated report
          generation to "print" the file to a default location other than the
          current path.
Version 1.99 - 18 February 2019
        - Fix for Drag and Drop in the Report Editor.
- New function: SetProgressPercent. Can be used to manually set the
          progress bar percentage.
 
      Version 1.98 - 16 February 2017
      
        - Add ability to support custom joins in a view used in RightReports.
- Support for Premiere
- Support for MultiProj defines (in Clarion 10).
- Allow a function to be available for printing, but not editing.
- Leave the GUID available for reports use.
- RightReportsChangedWork - static queue changed to a threaded static
          queue.
- Fix - using local field pointer in place of Global fields in some
          places.
- Support Justify in controls other than strings.
- ABC uses file manager for ReportDefinitions file transactions
          (rather than file).
- Support drop into text reports from the fields.
- PrintPreviewerControlOutput - select dependant on passed parameter.
          Post to Print/Save button if window must be hidden. Split procedure
          definitions to allow embed code.
- RightReports_PrintPreview - New variable: %CloseWindowAfterOutput
          (force close after save/print).
- Suppress the use of criticalsection classes.
- RightReports class - new method : InitFileManagers to set the
Version 1.97 GOLD 25 February 2015
        - Installer supports Clarion 10 
- Unnecessary use of %cwversion removed.
Version 1.96 GOLD 11 July 2014
        - When choosing a multi-page layout in the previewer, extra spots are
          hidden if there are insufficient pages.
- Background of pages in previewer forced to White.
          Version 1.95 GOLD 14 May 2014
      
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier. 
      
          Embed points standardized (was generating in different orders each
      time). This may mean that your embed code in the RightReportsUpdate code
      (in the derived methods) has changed. So for example, you may have had
      some code in the local procedure:
      
 
 
      this now needs to be moved to the correct position.
      
      
 
      
      The way to determine the correct position, is to save a copy of your
      generated clw file, and then compare the generated file to the saved copy
      and move the embeds until the code is generated in the correct order as it
      was before.
      
      Fix for evaluating a numeric calculation (when assigning a runtime field
      calculated variable's value - where the value is a formula containing
      other runtime variables). 
      
      
Version 1.94 GOLD 31 March 2014
      
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
      
      Version 1.93 GOLD 10 February 2014
      
        - Change to show PDF Tools users what to do when upgrading to PDF
          Tools 4 or higher.
Version 1.92 GOLD 29 October 2013
        - Fix: Clarion6 TXD import workaround for UserOption import bug on
          last Alias table
- Fix: Import Procedures button disabled after importing RRprocedures
          (to allow separate import of Import/Export procedures).
- PlugValue method: Formulae can now contain functions in the values.
- Template Fix: Set %RRFamily when %SetFamily is called (prevents
          legacy code being generated before %RRFamily is set).
Version 1.91 GOLD ...
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Fix: Template error: Unknown value %SetFamily
- Add: Template buttons to import Right Reports Txa and Import/Export
          Txa
- Change: Some global template options moved to simplify and
          standardise.
- Update form tweaked. init and open files and translations moved to
          the derived .setup method. This is to handle import from "template"
          report in the PrimeFields method.
- Vresize and Hresize init code (update report template) changed to
          different priority. Clarion was not always generating both (at the
          same priority embed).
- Template fix in import - when overwriting an existing report, was
          not overwriting the band controls correctly (after import).
- Template fix in report import - don't overwrite global fields when
          importing a report. A bad global field import will impact all the
          reports.
- Import procedure provides for a parameter (in order to import a
          specific pre-selected report xml file). To make the most of this
          feature, you need to add the following parameters to the prototype of
          the RightReportsImport procedure: (<string pFileName>,<string
          pOverrideReport>)
Version 1.90 GOLD ... 8 August 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Include fixed TXA for Clarion 8 support.
- If an image is created using default height and/or width, don't set
          to 50/50 (keep 0/0 to use the base height/width of the image).
- Template variable %TempField renamed to %TempRRField (clash with
          another 3rdparty tool if Clarion generator got it's context mixed up).
- Template fix - for alternative names of custom functions (to be made
          available in reports), add the alternative name (not just the function
          name) to the list of available functions.
- Template change - Import procedure - when importing global fields,
          don't update the global fields already there, just use the existing
          ones. Note: requires a primary key on the RRDefnFields table.
- Template fix - %Family was used before declared in some cases
          (Clarion 8).
Version 1.89 GOLD ... 3 July 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Template fix for NetTalk 7.10 and above.
- Template fix for Multi-Proj projects in C7 and up (was not including
          the project defines and the clw files in the compile).
Version 1.88 GOLD ... 2 May 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Clarion 9 compatible build
- Fix for incorrect pictures for file fields (sometimes) - if file was
          used in a view then the field was added twice into the internal fields
          queue (one with the correct picture and one with @s255). This meant
          that not always was the correct picture used in displaying the field
          in the report.
- Template tweak - for Clarion 8, use the ABC method name for deriving
          code into the embed point (rather than the where clause, that seems to
          be eratic).
Version 1.87 GOLD ... 6 March 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReports Template - fix regression where if a field was not in
          the includefields list (and the includefields list was not used) then
          the field was suppressed from reports.
Version 1.86 GOLD ... 5 March 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReports Template - suppress overed fields. Also, in some cases
          NoReports fields were still permitted in the field list.
- RightReportsPrinter class - regression fix (1.83) in text reports -
          was printing extra lines at the bottom of a blank page.
Version 1.85 GOLD ... 7 February 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReportsPrinter fix - RRLoadLookup. clear(self.LookupQ) - was
          sporadically GPFing when a lookup was on None (file) - a leftover
          pointer could exist when adding the fields to the lookup queue.
- Remove added DOS driver addition to the project (superfluous).
      Version 1.84 GOLD ... 6 February 2013 
      
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - PrintToFile changed to DOS (rather than ASCII).
- Detect OI presence (and version) at start of generation (not just on
          the #prepare).
- SendKeyToLookupQ,SendKeyNameToLookupQ takes a handle to the queue
          (rather than the queue).
- RRprintqueueType line is len 1024  and has LineLen parameter (also
          RRsbConType has a textlen field). Text reports are no longer clipped,
          but the LineLen keeps track of the len and outputs accordingly.
- RightReportsPrinter.PrintReport - All graphics reports go through
          previewer (although hidden if necessary).
- Reports must never use obsolete PDFGenerator class. Always use the
          previewer PDF generator.
- New method: PrintReportWindowTimer - allows for a "callback" event
          during print output generation for derived code in the template (for
          example to send a heart beat using NetTalk to a controlling
          application).
- SendEmail called for Graphics reports after print (if forced using
          Previewer and Email option selected).
- RightReportsPrinter Class: New properties: HidePreviewer (use this
          to call the previewer, but hide it and auto output - additional
          parameter to the AutoReport, which 
Version 1.83 GOLD ... 4 January 2013
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReportsPrinter Class: New properties: HidePreviewer (use this
          to call the previewer, but hide it and auto output - additional
          parameter to the AutoReport, which allows a non-AutoReport to hide the
          previewer), PrePrimed - Set if you don't want the user properties
          loaded in the PrepareWindow method, RRPrintOptionsGroupType -
          landscape property added to the group (allowing landscape to be passed
          to the Previewer).
 RightReportsPrinter Class: Changes - don't default Destination to 'S'
          on construct; PrimeDestination method tweaked (self.destination not
          overridden there); Initalise procedure does LoadOFQ whether in
          Webserver app or not; ShowUserPrompts sets the UserControlPicutre (for
          the usercontrol) if not already set; PrepareWindow - Load destination
          (if not preprimed)
Version 1.82 GOLD ... 4 December 2012
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReports TPL - Fix for OfficeInside 4. Exports to excel and word
          correctly.
- RightReportsPrinter class fix - if a variable contains < in the
          text, don't reconcile to a variable.
 
Version 1.81 GOLD ... 27 November 2012
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReports TPL - Support for detecting OfficeInside 4 (and using
          correct property names).
 
Version 1.80 GOLD ... 8 October 2012
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
      Version 1.79 GOLD ... 17 August 2012 
      
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - RightReportsPrinter - if primary sort has keys, then don't populate
          None in the order. 
- SetFileWithKey - Do away with (1=1) in the filter (optimize the view
          engine so that the filter matches the order and the key, otherwise can
          be slow in some instances. 
- AssignServerFilters - fix GPF (dynamic index that did not have field
          assigned). 
- AssignServerFilters - if a field exists in the manual filter, then
          don't apply the filter automatically as well. Also apply the UPPER()
          attribute to any fields in the manual filter where the key is case
          insensitive (makes the view go faster). 
- IsInParentArea - restore the original item queue if it was already
          loaded. 
- RightReportsPrinter.EvalFQ - evaluate (that contains a function)
          could be returning an errorcode from the function, rather than from
          the evaluate. 
- RightReportsPrinter.AddBlankParm - only add an extra blank parameter
          if it is at the end of a functioncall (not some other evaluate error).
          Also built array protection for a possible GPF 
- RightReportsPrinter.SetSecondary - set secondary linked fields to
          the filter after setting the primary fields (optimize the view). 
- RightReportsTree class uses equates rather than numeric values
          (makes the classes more readable). 
- Template change - prevent the control drop from occurring in the
          editor outside a band control co-ordinates. 
- Template support for the PDFXToolsReport (was just the
          PDFXToolsGlobal template before) template 
- Template change - if printreport window is hidden, and destination
          is not set (or is set to screen) then force to file. 
Version 1.78 GOLD ... 14 February 2012
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - LINENUMBER local variable to the editor class - only useful for text
          reports though. 
- Disable printing old text controls (if exists in a graphic report).
        
- CRLF is stripped off the calculation variable name. 
- BuildGenericFieldQ derived procedure in the Editor (with embeds),
          even if no custom variables are added. 
Version 1.77 GOLD ... 11 January 2012
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Support for Block Start and Block End in graphic reports (sdtq and
          sbcon queue properties to store block until block end is reached, and
          block is printed). 
- Fix for PageNum in Graphic reports not always incrementing (Now
          increments in the PrintGraphicFooter rtn). 
- PageHeight moved to PaperHeight property (can be overridden in
          derived methods). PaperHeight and PaperWidth swapped if printing in
          landscape. New method SetPagesize to detect Paper size (if not set in
          report - sets paper size based on the paper used for printout).
          PaperHeight and PaperWidth in report properties deprecated (although
          retained where set in report properties for backward compatibility) 
- SendTo and destination (if set in the report properties) overrides
          the previous used saved ones. 
- ReportEditor: Entry Controls in Report Editor default to Insert mode
          (not Overwrite). 
- ReportEditor: ItemQueue width and height set in CreateItem method
          (Images take on the size of the image instead of 50/50). 
- ReportEditor: MoveItem first checks if the dropped area is at least
          partially inside a band. Otherwise controls were getting lost in
          never-never land. RefreshBand method forces re-draw after a control is
          changed bands. 
- ReportDataClass: Dis-allow set file (if file used rather than view)
          in record order (for SQL). If no key is specified, then file is set in
          primary key order (for SQL). 
- ReportDataClass: Remove CRLF in filters and orders when setting
          server orders and filters. 
- ReportDataClass: Makes allowances for case-insensitive keys. 
- ReportDataClass: Allows no key set if no keys in the table (tps). 
- RRClass: ReplaceCRLF and ReplaceChars methods - from StringTheory. 
- Template change (ReportEditor) - Refreshes controls after editing
          (size, text, etc). 
Version 1.76 GOLD ... 30 November 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Fix for Create Image - was defaulting to RepImage.bmp - and the size
          was set to 0x0 if that file was not found. Now immediately opens the
          file dialog window, and uses the file selected (or 50x50 if the
          filedialog window is cancelled). 
-  Change for Create Line - offers Vertical|Horizontal|Other line
          selection and sets parameters accordingly. 
-  Fix - when editing a report control's property, immediately
          refreshes after editing. (New method RefreshBand is used for this
          purpose). 
-  Fix - Edit in place strings default to Insert mode (was defaulting
          to overwrite mode). 
Version 1.75 GOLD ... 22 November 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Fix for Default Font Size not set (regression in 1.74). When
          populating a control was using 0 for calculating the height. 
- Only set default font settings in editor if not zero or blank. 
- Global default fonts for application (used if default fonts not set
          for a report). Set in template. 
Version 1.74 GOLD ... 18 November 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        - Default font size for graphic reports (set in the report
          properties). Allows individual aspects of a font to be overridden for
          each control (otherwise the default font will be applied). 
- Default height for the new text control specified (was defaulting to
          0) 
- Support for a function call within a function call (for calculations
          for runtime field values, etc).). 
- Debug window size increased, also add the Time and/or index
          (selected with a checkbox). (AddToDebugQ handles additions to the
          debug queue). 
- TPL fix - removed Previewselects output checkbox on globalselects
          output checkbox on global tpl (only use option on PrintOptions window
          output). If old Previewer is used, then you must re-import the
          previewer. 
- TPL fix - correct the ReportEditor procedure code generation. 
- TPL change - in PrintPreviewer window hides the window during init,
          and unhides. Prevents the buttons from not displaying. 
Version 1.73 GOLD ... 25 October 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        -  Fix - RightReportsPrinter class. When a function occurs inside
          another function for an equate, we need to evaluate so that the final
          eval function can occur correctly. 
-  Internal - Moved FileInfoQueue from the PrintReport to the class
          properties. 
-  Debug window enlarged. Also added Index, Time, Clear and resize
          features. 
-  Template Fix - correct the order of code generation for legacy apps
          in the template for the EditReports window 
Version 1.72 GOLD ... 16 September 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      
        -  Fix - Invalid variable declaration - QueuePos in the editor window.
        
-  Fix - Destination drop down changes dependent on destination
          selected if forced. 
Version 1.71 beta ... 9 September 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      This release focuses on some fixes when using Global variables in the
      report designer.
      
        -  Fix - if calculation is added to end of a branch, was getting the
          order confused. 
-  Fix - for function in a conditional variable set. 
-  Fix - time pictures - where @t13 and 14 are used. Treat anything
          below 100 as 0 (or blank). 
-  Additional embed points in ReportEditor window template. 
-  TPL change - use formula or print dialog for Destination detail
          (dependenton output selected) where destination is pre-selected.on
          output selected) where destination is pre-selected. 
-  Included dctx in the install. 
Version 1.70 beta ... 13 July 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      This release focuses on some fixes when using Global variables in the
      report designer.
      
        -  Template generated class - don't init dataobject if already inited.
          DataObject init now has addfields, addorders and addrelations (rather
          than separate call). 
-  Template changes - more embed points, arrow button is suppressed in
          text reports, ?FormSheet selected on bandcontrol selection, files for
          list made 255 chars. 
-  Text reports - Picture @t14 returns . if 0. 1024 replaced with
          equate. Cater for bands with > 1024 text chars (for text based
          reports). Still use 1024, but rap to another detail line where
          necessary. Rapped text was creating an extra char in some cases.
          Header and footer strings increased from 1024 to 4096 chars. 
-  Fix - totalingrequired upper case total fields.required upper case
          total fields. 
-  Change - default new fields to Computed (type) and No (clipped).
          Also goes straight into EIP mode for the name of the new var (also for
          totaling). 
Version 1.69 beta ... 20 June 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      This release focuses on some fixes when using Global variables in the
      report designer.
      
        -  Template & Class change- fix for "variables used in reports":
          Allow picture use, variable is now available in the global field list
          at runtime (for reports). 
-  Template fix - Prompt (for local and global variables) was not
          editable 
Version 1.68 beta ... 9 June 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      This release focuses on some fixes to the Editor. Useful for the report
      designer, but no impact on the end user (for printing).
      
        -  Template & EIP Class - fix for EIP in ABC (did not do both
          fixes for legacy and abc in 1.67 - TakeEvent moved in front of editor
          takeevent, get(listcontrol.queue) moved to class. New prop
          CurrentPointer, to verify when saving that the record is the same
          queue record as the one fetched. 
-  Template tweak - cater for TabTree in a the Formula editor window
          (was not selecting the correct tab for the passed picture) 
Version 1.67 beta ... 7 June 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      This release focuses on some fixes to the Editor. Useful for the report
      designer, but no impact on the end user (for printing).
      
        -  Template - fix for calling FontDialog (was using the incorrect
          parameter for the font style (so was not being set correctly). 
-  Editor fix (requires draw 3.04) - When deleting a control in
          multi-select mode, was not selecting the next control correctly. 
-  Editor Fix (tpl and class fix) - when in EIP mode and switching to
          another control, was not saving the value and the EIP mode was not
          closed. 
Version 1.66 beta ... 3 June 2011
        
      NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
      This release focuses on optimization (thanks to our trusty 
Profiler)
      - running reports, and loading the printreport option page. Also some
      general cleanup. EIP template is moved to a class.
      
        -  Template - tpl view option to create automatically (otherwise
          declared in code manually) 
-  Template fix - Use tpl vars for RR procedures (specifically
          editformula and LookupPic 
-  Email address used can be 252 chars (was limited to 50) 
-  Class Fix - if using file and key not specified (or none), then set
          in primary key order record order (for flat files). 
-  Regression fix in 1.65 for legacy (erroneous use of the
          DataFileManager.File pointer) 
-  Resize tweak - don't allow ResizeDelta to be > 3 and if region
          lands outside min and max ranges, then reset to within the min/max
          range 
-  Editor fix - when deleting a loop that was immediately proceeded by
          another loop, was deleting the proceeding loop. 
-  EIP class fix - when clicking off a drop list (or escaping), was
          not closing the control. Also, regression fix in 1.65 - you must
          dbl-click on an item to activate EIP (or hit enterkey). 
Version 1.65 beta ... 23 May 2011
        
      NOTE: You must delete the 4 instances of the Edit InPlace extension
      template on the RightReportsUpdate window. EIP is now handled in the class
      (not the additional template). This release focuses on optimization
      (thanks to our trusty 
Profiler)
      - running reports, and loading the printreport option page. Also some
      general cleanup. EIP template is moved to a class.
      
        -  Object - Debug statements only compiled in debugmode. 
-  Internal BuildOrderList - handles keys only (not User Selects
          option as well) - used for lookups. 
-  Addition: Can handle lookup where primary is set to "None" (IOW
          manual relationship).  BuildLookupList. PrePrimed option in SetWithKey
          method provides a set(key,key) for this. ClearLinkingKeyDescFields
          (when key is ascending) clears to 0 (or blank). Means that key fields
          not specifically assigned will be blank. LoadLookup uses field primed
          values. Lookup uses the secondary file to store additional linking
          fields info in this case. 
-  GetFileFieldValue - allows a derived method for getting the Report
          Files field value (rather than using the file properties). This makes
          loading a report for printing and editing much quicker. 
-  CleanFileName - strips auto-generated invalid chars from the
          filename for output. 
-  AlwaysUseFiles property - allows reports to always use files (not
          generated views). In TPS, using files is about 40% faster than a
          perfectly constructed view. 
-  Datamanager class uses ABC methods for file handling (if in ABC).
          New methods - NextRecord, PreviousRecord, AddFileManager,
          _GetFileManager, OpenFile, CloseFile, Get (can handle ABC class use,
          rather than simple next() or previous(). RRUseABCClass project define
          is used to indicate this to the class. TPL generates AddFileManager
          calls for files used in reports. 
-  Fix: Field points to the handle of the field (in the
          Datamanager.fieldQ). Was doing a simple equate (thus containing the
          contents rather than the address). (Good for lookups or loops where
          None is select as the primary file). 
-  SendKeyToLookupQ - Key name uses upper (for case insens testing). 
-  Fix: ServerOrder can have multiple field names specifying the order
          (encased in <>). 
-  Previewer - only get the LastOutputFiles q and parameters if the
          window is not hidden. 
-  New method CheckForNulArray - used to test an array dim validity
          before doing an evaluate (causes GPF if invalid). 
-  EvalFQ tries to get the field using it's name (before looping
          through the queue to test if an initial try didn't get the field name
          first time). 
-  Fix: ServerFilter option gets "simplified" (leaving primary field
          names un-evaluated) 
-  Old ReportPDFGenerator class no longer utilized by default. Rather
          uses the ReportToPDF generator. 
-  AlwaysUsePreviewer overrides the AutoReport property's force hide
          previewer. 
-  Superfluous call to self.FileHandler.DisposeCreatedString() no
          longer used after SetFileFieldValue. 
-  Fix AssignCurrentSource: returns errorcode if can't find in the
          datasource (prevents GPF when a datafile is delete from the dct). 
-  Don't change Filename extension (for rept output) automatically if
          FileName extension manually set to a customized text extension. 
-  New class RightReportsEIP - handles EditInPlace on the update
          window (rather than the extension template). EIP template stuff moved
          to the RRUpdate template. 
-  RightReportPreviewer now takes an options parameter (for
          AutoReport, AlwaysUsePreviewer). 
-  DataManager generated files renamed to 5 chars of app name (like
          normal source generated files (rather than 3 chars of appname). 
-  Fix for suppress field (where entire table was suppressed). Not
          consistently suppressing fields. 
-  TPL fix for WebReports - only setsessionvalue for user prompted
          values if prompt is not hidden. 
-  TPL fix - PrintOptions window - Email Option select also enables
          file type selection. 
Version 1.64 beta ... 25 February 2011
        -  New var NoRecords can be used when NoRecords are found (to print a
          NoRecords Band). 
-  New method OverrideRRFormat allows specific field overriding code
          in the application. 
-  Increased FieldValue (loc data field in the SetQueue) to 2048 - was
          clipping a fields value > 1024. 
-  Image control consistently uses textvalue in the itemqueue (instead
          of ImageName). 
-  Previewer - OnlyResizePages property allows other resizers to
          resize buttons, etc. 
-  Printer - LinesPrinted counted correctly. 
-  Printer - EmailAddress property 
-  TPL change - allow PrintProc to be in an external dll. 
-  TPL change - TNA stuff removed from template. 
-  TPL change - if Makeover is disabled on the PrintPreviewer proc,
          then don't generate makeover code. 
-  TPL fix - PrimarySort code was being generated into all methods. 
-  TPL change - WebReportOptionsCode, added template embed points for
          optional code. 
-  TPL fix - Output set in PrintOprtions was not causing Previewer to
          be hidden. 
-  TPL fix - allow RRPrintOptions to have flexibleparameter
          names.parameter names. 
Version 1.63 beta ... 8 September 2010
        -  NetTalk WebServer support. (Includes 2 new extension templates for
          the SetPrintOptions and PrintReport procedures). RightReportsPrint
          procedure accepts an optional group containing values for user
          variables. See JumpStart for details. 
-  Template change - XML Export forces file and record boundaries in
          the save and load command (for xFilesschange).change). 
-  Template change - more embeds added to the generated procedure
          routines (in the PrintOptions window). 
-  Tree Class fix - @G user variables were not displayed in the field
          list. 
-  Class fix - PrimarySort, UserV, FileName properties increased to
          252. 
-  Class fix - LoadUserValue returns default if the GlobalClass is not
          initialized (NTWS support). PrintReport only sets the filename if the
          filename is passed. ShowUserPrompt sets the userPrompt control text. 
-  Class Fix - SetFileNameExtension was not always picking out only
          the filename. 
-  upgraded RightReports01.tpw to 1.65 
Version 1.62 beta ... 17 August 2010
        -  _CleanDataSourceQ - clears values out between printing. 
-  GetFileFieldValue, Set - uses created string to return value
          (instead of any - which leaks mem). 
-  Removed superfluous debug logging 
-  SetFileWithKey - added DontClear parameter (if values are preset) 
-  ChangeFieldName/BindFileRecord - allows a changes to be made in
          derived code (for filters). 
-  OpenViewFile - viewfile record is cleared after view opened. 
-  AssignServerFilter - Server Filter assignment fix. Also, Server
          order is set (must be an order). If order is not set, then result set
          was intermittent. 
-  PropertiesGroup uses the same structure as the
          BE:CPropertiesGroupType (some variables lengths were mismatched) 
-  FieldName lengths increased from (40 or 30) to 100, and pic lengths
          to 51. 
-  Filters with '<somename>' instead of <somename> handled
          correctly. 
-  SaveUserValue and LoadUserValue - Long UserValues (i.e. >255
          chars) catered for. 
-  Kill method frees and clears all var queues (for next report or
          report repeated in same thread session). 
-  PrintReport - Wait2Window MDI attribute cleared so that PrintReport
          can be called from a SDI interface. 
-  Both AutoReport and normal print use the same routines (in
          PrintReport). 
-  Band queue ordered correctly (in some cases was not printing the
          header at the top. 
-  ShowUserPrompts - AutoReport does not show, but values are primed
          correctly. 
-  TPL change - added embed points. Init code moved to before
          OpenWindow (for autoReport). SendEmail Procedure code generated (if
          NetTalk exists in the app). 
Version 1.61 beta ... 26 May 2010
        -  ABC TXAs had a spurious file from the example app. 
-  AlterUserPicture method (Printer class) - allows override of the
          default user field's picture in the Print Options window. 
-  In Data class, pPropSQL parameter (in init methods) changed to a
          long. 
-  Template fix - missing missing %UseRRPropSQL template var
          (regression in 1.59) 
-  Support for older versions of PDFXTools 
Version 1.60 beta ... 12 May 2010 See Note for
      1.59. This version just contains a workaround for the template in clarion
      7.1. 
        
        Version 1.59 beta ... 11 May 2010 Note: NO TXA import required if
      upgrading from 1.53 (although re-import of the previewer is recommended
      for additional report output file type support - see 
Add
outputs
        to the Previewer window).
      Note: You can create a lookup for a user variable on the PrintOptions
      window to enable the user to select a value for the user variable from a
      selection. See 
        The_RightReportsPrintControls_Control_template for details. General
      changes:
      
        - Previewer can select output (rather than PrintOptions window). New
          control template (RightReports_PrintPreviewOutput) to allow additional
          outputs to be supported by the previewer. HyperActive can preview
          files (like PDF) if added. INI File stores temp list of last used
          files (and last output selected). Preview controls group moved to
          above the preview panes (to allow for output controls below). Requires
          txa import. Uses WMFParser class (with assign target class) to handle
          report conversion to selected output.
      Template Changes:
      
        - Previewer supports Page# / OfPages again (regression some time
          back).
-  You can select whether the PrintOptions window can still select the
          output (or whether it is only selected in the Previewer now). Controls
          on the PrintOptions window are hidden accordingly
-  In the PrintOptions window, a Runtime report variable can have an
          associated lookup procedure. So a lookup button will appear (like the
          date lookup) if the variable occurs as a User variable. This is setup
          in the PrintOptions control template on the Options tab (User Variable
          with Lookup). 
      Class changes:
      
        - If the RightReports tables are SQL, then the SQLFilter and SQLOrder
          are displayed in the primary and secondary loop options. Otherwise
          these fields are hidden.
- Previewer class resizing - SizePages and ResizeWindow (new way) -
          uses 3 groups: 1 around the previewer controls, 1 around the previewer
          image panes, and one around the output controls. (the old way is still
          supported as well - making use of the new method OldResizeWindow).
- New Methods: PrintOutput, AddOutput, Changeoutput, ChangeOutputFile
          (control Output possibilities of the Previewer), getLastFile,
          StoreLastFile, GetLastOutput, StoreLastOutput (used for saving between
          sessions), RemoveUnwantedPages.
Version 1.58 beta ... 21 April 2010 Note: NO TXA
      import required if upgrading from 1.53 Template changes:
      
        -  Added generation of the REP:EnablePDF compile/omit flag (rather
          than in the class).
-  Only use the %HandcodedViews variable if it exists (i.e. to not
          declare views for tables requiring handcoded views)
-  Only generate OfficeInside code if the template is added and the
          features are not disabled.
-  Perform a refresh for the properties of a Secondary (when the Order
          is changed) immediately upon key change.
-  Move embeddedcode from thecode from the LookupPicture procedure to
          a control template (this means that upgraded code will be implemented
          into your app automatically rather than via a TXA import).
-  PrinterOptions template - Fix filename generation (when selecting a
          file). PDF/TXT extension auto-appended dependenton the status of theon
          the status of the SendToPDF check, and Word and Excel filenames are
          generated if blank.
-  PrinterOptions template - SendToPDF saved and restored between
          sessions. Fix SendToPDF disable/hide status (for text/graphic
          reports). Only enable Word/Excel output if graphic report.
      Class changes:
      
        - Editor Class - for text reports, destroy the region control, and
          create a box control in it's place (so that the region does not grab
          the events meant for the text controls of the bands)
- Printer Class - set self.filename to the destination filename passed
          in the PrintReport method. Also clear the SendToPDFile flag if Word or
          Excel output is selected.
- PrinterClass - suppress call to DrawImage (in PDF output) - causes
          GPF on output.
- PrinterClass - fix Word and Excel output generation.
- PrinterClass - Word/Excel/PDF output selection goes to the Previewer
          first (for page selection, etc) before printing out.
- TreeEditorClass - Add a new secondary loop below the Primary.
Version 1.57 beta ... 31 March 2010 Note: NO TXA
      import required if upgrading from 1.53 Template changes:
      
        -  Fixed %MPFunctions missing var error
-  In CloseEdit embed point (EIP template) call the refresh for
          refreshing the range values after editing a key and source file.
-  Set Debugging property
-  Move REP:EnablePDF declaration to the Project defines.
-  If OfficeInside is disabled, then don't make the OfficeInside
          functionality available to RightReports.
-  PrintReport controls template - fix filename generation (correct
          prefix dependent on the file type selected).on the file type
          selected).
-  Save SendToPDF state between report outputs.
-  For Text reports, disable word and excel output generation.
      Class changes:
      
        - TranslateText parameters switched (and TranlastionID made optional).
- BuildTree - Set display for debug Header and Footer correctly.
- NumberOfLines in properties change EditType to 0 (editable).
- When selecting a different Key, the range prompts are changed at
          runtime (new method RefreshRangeValues).
- When selecting a different source, the key is changed to User
          Selects and the range prompts are cleared.
- Add TranslationText call to hard-coded text messages.
- Take previous loop out of LoadOneToDefnFilesQ (not supported in most
          backends).
- Fix for PDF output (now makes a pdf file). Note: Graphics are
          disabled at this stage.
- Fixed Word and Excel output (disabled for text based reports).
- Word and Excel reports are previewed first.
Version 1.56 beta ... 29 March 2010 Note: NO TXA
      import required if upgrading from 1.53 Template changes:
      
        -  Binded Functions list automated by the MProj template (requires
          MultiProj version 2.80 to automate the functions list). Overrideable
          per function. 
-  Split list of Variables off from list of Functions (for binding in
          reports).
-  GetLastDFIRecordNumber code for SQL compliant fetch (for last
          number). Uses a view to fetch the last number.
-  DatePicker can be specified in another app (Multi-DLL support).
      Class changes:
      
        - New method GetLastDFIRecordNumber (so that derived code can be
          implementing in the app). Was using previous() - but not SQL
          compliant.
- change DetailLen in BandQType queue to a long (rather than a byte).
- GetBandFromQ - GetCondition, GetBandHeight, GetBandWidth, etc use
          this method to locate the correct BandQ record (removes duplicate
          code)
- For text reports - add DetailLen item to the BandQ item list.
- When looping through the DefnFiles (to create the tree of bands)
          clear the treeorder field to allow the set to start at the beginning.
Version 1.55 beta ... 4 March 2010 Note: NO TXA
      import required if upgrading from 1.53 Template changes:
      
        -  Don't store INI resize values if outside the range.
-  New embed point In ImportReport routine (template generated code).
      Class changes:
      
        - Improved resizing in the editor. Uses the sheetcontrol (rather than
          the window) as reference. MouseDown and Mouse Up events are handled in
          resize region (even if mousex and mousey return outside the region).
          Don't change cursor in other resize region if already resizing.
- OpenPrintToFileAuto routine sets the text filename (if printing to
          text) before creating. New property AutoReport.
Version 1.54 beta ... 26 February 2010 Note: NO
      TXA import required if upgrading from 1.53 Template changes:
      
        -  Template generated code disabled (if RightReports disabled).
-  Template fix - double up on single quotes in file description in
          generated code.
      Class changes:
      
        - Use CriticalSection - either use NetTalkCritical Section (if NetTalk
          is added) or the ABC one. (New construct and destruct, wait and
          release methods to handle the critical section).
- Translationsupport for 'None' (use propertysupport for 'None' (use
          property NoneText)
- Adds all datasource names to the datasource names if Primary is
          selected as None.
- UnlinkedField check uses relationqueue (rather than key queue).
          Additional limit fields must be assigned to secondary files in the
          unlinked fields.
- Fix - create(ViewFile) is only called if the error is errorcode(2).
- Undo feature in the Formula Editor (Uses CtrlZ and CtrlY - to a undo
          Q for the formula text). New method AddToUndoQ, construct, destruct.
- EvalFQ caters for functions, stored within variables (also recursive
          variables).
- SaveUserValue and LoadUserValue are used to load and save user
          values entered in the PrintReport options window between sessions.
          Destination, fileName, Landscape, Email, Printer, Primary Sort order
          are now stored/restored.
- Fix - <> angle brackets not added to functions.
- DefnCode property set in the printer init method.
Version 1.53 beta ... 9 December 2009 (NB: TXA import
        required)
      Note: 1.53a includes the assert to warn of a xFiles upgrade requirement. 
      
      Note: 
You must re-import the TXAs.
      Unfortunately due to a Clarion bug, there's no way to avoid a compile
      error now that the templates need to start using the use variables for
      previously imported windows' populated controls. The new TXAs force a
      valid use variable in the controls that allow you (well RightReports
      actually) to use those use variables in code. 
      
      
Summary: Lots of little changes - but moved code
      from template to class, removed tna code, added description feature (for
      table select). Also fixed the date user lookup regression (from 1.52). Fix
      report import and import: Was not consistently importing reports correctly
      
(Requires xFiles 2.00). Template changes:
      
        -  Template assigns use variables to properties (Print Options
          window).
-  Template calls AddRelations and AddDataSource with file
          descriptions (from the dct).
-  Printer window template - you can handcode a particular table's
          view if required (rather than get the template to do it).
-  Editor window template - assigns the sheetcontrol property to the
          sheet control (populated by the TXA)
-  Import template - IgnoreGroupTags property set (BandControls
          properties were not imported correctly).
-  Printer options Template - removed some TNA only code. Initalise
          (sic) called without passing the control handle of the first control.
        
-  Export Template - add order to views.
-  Export Template - correctly define the views to loop through the
          parent file and inner join to the child file for exporting.
-  Export Template - only project single fields from the parent files
          in the view (so that not all the fields are projected, thereby
          introducing duplicate field names in the tags).
-  Export Template - Split up Export routine - so that handcode can be
          embededd in to the routine as required.
      Class Changes:
      
        - Class changes - AddDataSource method returns correctly whether the
          DataSourceQ was added to or simply updated.
- Description field added to the files list (which means you can
          explain tables in the dictionary).
- Range for a key - doesn't add quotes if quotes are already there.
- Allow user fields to be assigned to the secondary ranges correctly.
- Sort Queue - increased field lengths from 20 to 120.
- Editor class change - SyncControlWithItem moved (for text reports)
          to new derived method DrawItem.
- Resizing changes (editor window) - relative resizing was not working
          correctly. Sizing made relative to the RR sheet control. New property
          SheetControl contains the value of the sheet control populated by the
          TXA.
- Previewer class - just disable not-required controls when 1 page is
          in the previewer output. Also disable controls if 0 pages in output.
- Printeroptions class - default output to Screen. StoreUserPrompts
          uses local variable rather than stored property (otherwise doesn't
          always get cleared). UserControls properties (rather than assuming the
          order of the controls in the PrintOptions windows). Date lookup
          regression fixed.
- Printer output class - if NextRecordFound fails, debug output.
          Delete translateClassifications method (TNA only). ShowPriSortQueue
          sets the pos of the primary order and hides if nec.
Version 1.52 beta ... 22 October 2009 No TXA
      import is necessary if you are upgrading from 1.50. This release is
      primarily to integrate the version of RightReports used in TNA with the
      current version. Template changes:
      
        -  Template now uses the Object01.tpw - which creates runtime embed
          points for each method (for deriving locally).
 NOTE: This may mean that code written in the previous embed points
          gets orphaned. The affected procedure could be the RightReportsPrint
          procedure
- Template change - Import Export options moved to the global template
          (only set in one place for both import and export).
- New OverRideRRFormat method allows runtime change of format in the
          exe (i.e. a derive point).
- Template change - allows custom functions to be added to the
          RightReports functions list from another dll (for multi-dll
          applications).
- Editor window - variable and function queue sorting moved to the
          object.
- UserEntry control ID variable - stores the ID of the entry controls
          for the PrintOptions window. Used to check if DatePicker must be
          called or not.
- PrintOptions window - Primary Sort entry control resizing moved to
          the class.
- TNA specific code removed from the template.
- %SetFamily returns the family.
- Simplified template #at inserts (put the #if into the where())
- AssignGlobalClassPointer - 
- Import - check that a quote has not been escaped when importing.
- Printer - ReportOptions moved to class properties (affects some
          methods that were being passed the options).
- Printer - PrintReport split into 3 to enable code into places before
          and after the printreport command.
- Printer class - call GlobalRRFromat (in picture generation so all
          formatting is handled in one place).
- Printer class - use AfterWaitWindow to add window dressing to the
          progress window (like makeover and drawheading, etc).
- CallLoadClassification, PrimeUserPrompts, BindRest and other methods
          code (for TNA) - removed to TNA.
- CancelButton - closes the print window (legacy).
- NewMethod - CallUserLookup and CallUserDateLookup will be used in
          future to trigger a lookup for a user entry other than just a date.
- Tree class - AddBuiltIns uses the generic method (rather than
          hardcoded).
      RightReports class changes:
      
        - Construct method calls constructor. This allows code to be embedded
          in the construct method.
- BuildGenericFieldQ calls moved from the template to the class.
- Log method allows severity level of log - to allow exhaustive
          debugging to be removed.
- GetFileFieldValue returns '' rather than all null chars if the field
          consists of nulls.
- RRFormat, RRdeFormat, TimeStringToValue, OverrideRRFormat,
          TimevalueToString, Log methods all moved to the global class (so that
          custom code can be entered in one place).
- AddItemToFQ method - allows custom addition of a field to the field
          queue.
- New field in RelationQ - UpperRelationName (uppered when adding so
          that case-sensitive lookups on the queue can be performed).
- in GetNumRecords (for progress when printing report) - test if the
          key is valid (prevents GPF) before using it.
- In OpenSource - use 42h mode to open a datafile (was using 40h)
- In OpenSource, GetViewFileHandle to override the handle for a file
          in a view (lke for the classifications virtual file in TNA).
- In LoadFQ - was not loading internal functions into the field q
          (FQ)).
- PrintReport parameter change - pPrintToFileDetail is a string
          handle, because the string needs to be changed in the method.
 
Version 1.51 beta ... 13 October 2009
        
      No TXA import is necessary if you are upgrading from 1.50
      
        -  Clarion7 template fix. Syntax in the template was incorrect.
-  Preview feature - double click on a page (in multipage view) jumps
          to a single page view of that page.
Version 1.50 beta ... 9 October 2009
        
      A re-import of the RightReports txas is recommended for this
      release (should be the last one.
      
        -  Data class (SetWithKey) - when calling view doesn't set the key
-  Data class (SetWithKey) - performs evaluate on the to and from
          values in case a formula is used.
-  FormulaEditor class - select the formulastringcontrol end at window
          open
-  FormulaEditor control template and class - alrt on formulastring
          control for CtrlA and MouseLeft2. Intelligent selecting (selects a
          whole variable or a whole formula and params or a whole word on double
          click).
- FormulaEditor class - Overwrite selected area when inserting
          variable/values/operators.
-  PrinterClass - fix range setting (SetPrimary method called with the
          correct values).
-  PrinterClass - calls SetWithKey after evaluating the to and from
          values.
Version 1.29 beta ... 6 October 2009
      A re-import of the RightReports txas is recommended for this release.
      
        -  TXA fix - excluded example code from the txas.
-  Printer.ShowUserPrompts - assert if controls on the Print window
          are not correctly ordered.
-  Print class - TakeEvent method to handle lookups (at this stage).
          Ultimately the template code will be moved to this method.
-  TNA classification template code removed from the print control
          template.
-  New Control template for the Print window (replaces the deprecated
          extension template).
-  Print control template - calls datepicker lookup directly (rather
          than through ABC template).
Version 1.28 beta ... 5 October 2009
      NB - see release notes for 1.27
      
        - TXA fix - resizing in RightReportsUpdate window. Corrected control
          specific overrides.
- Premier window (TXA) - added tips for controls and hot keys for
          those controls without.
Version 1.27 beta ... 5 October 2009
      A re-import of the RightReports windows is recommended in this release.
      This release requires Draw version 2.79 or higher.
      
        - New Previewer class and template.
- Previewer fixes: window resizing, image stretching.
- Previewer Features: turn on/off pages to print, zoom of all pages in
          multi-page display mode, zoom to one page (right-click menu), min zoom
          and max zoom properties allow easy customizable zoom limits.
- New Formula editor class and template.
- Formula Fixes: Always adds angle brackets to variables used in a
          formula.
- Editor fixes: CallImageDialog does not change the path, copies file
          to current dir (was not saving the path previously), resizing bugs
          (especially when returning focus to the editor window), template uses
          variables to determine the controls (rather than fixed vals).
- Editor Tree fixes: Add new item to below the current item, select
          new item. Delete item (calcs) doesn't change properties of existing
          items.
- Editor changes: Selection method improved (always makes smallest
          control top most), SetCursor upon option selection, Resize canvas
          routine moved to a method.
- New fields method: HandleEIP. Handles the checking of an
          added/changed field for a duplicate.
- Editor template - remove additional superfluous #sheet control
- EditInPlace change: Add spaceKey alert for editing.
- Printer fixes - SetPrimary range - 3rd element was being set to 2nd
          from element.
Version 1.26 beta ... 25 May 2009
        - Template change - RightReportsPrint window matches controls
          correctly (fix for C7).
- TXA change - removes invalid SEQ statement.
Version 1.24 beta ... 17 April 2009
        - RightReports globalclass - handles suppressed fields checking at
          runtime.
- EditIn.tpl - Allow for derived queue structures. Allow for
          non-standard Browse class names (i.e. other than BRWx).
- Range support in the primary loop in a file (editor window).
Version 1.23 beta ... 8 January 2009 Summary:
      Fixed - printing blank reports when file previously opened.
      
        - RightReports class change - RightReportsData based on
          RightReportsBase class.
- New method - HandleError. Allows messages to be translated and
          handled in one place.
-  DisplayWarnings allows warnings to be displayed as messages (for
          debugging)
- When Lookup file is changed, then the data is refreshed (was not
          adding the fields in a lookup initially).
Version 1.22 beta ... 23 December 2008 Summary:
      Fixed non-dispose of Draw object. Requires Draw 2.74 (so kill isn't called
      if init isn't called). Added translation ability (of messages).
      
        - RightReports class change - Re-instated the call to the
          dispose(Draw) method. This removes a memory leak.
- RightReports base class - at this stage contains common logging
          features only. All right reports classes (not based on a class) are
          based on this class to enable logging throughout RightReports.
          Constructs call the parent.construct to set the logging.
- New method: TranslateText used to translate text for messages in the
          RightReports classes.
- Word and Excel report generation moved to the template (uses code
          generated in the PrintOtherOutput derived class).
- New method: DisplayFile used to add template generated HyperActive
          code to display an output file after generation.
- Fix - saves Linking Fields when a LinkTo parent is None.
- Tpl change - detects Global HyperActive template addition and adds
          code to the Displayfile accordingly.
- Tpl change - OfficeInside detection to template generated code (not
          compile equate).
- Tpl change - embed points at 2500 moved to 2512 (reduces the
          possibility of template code overlap).
- StartPrintSelection window - detects controls correctly (so prompts
          disabled and enabled correctly). Also primes filenames (Excel and Word
          correctly. Regression fix from 1.14
Version 1.21 beta ... 2 December 2008 Summary:
      Regression in 1.20 - causing GPF when deleting a report.
      
        - RightReports class change - Removed the call to the dispose(Draw)
          method temporarily. This imposes a small memory leak which will be
          fixed in due course - but prevents the GPF when deleting a report.
- Template change - compute the INI file to use (from %INIFileName) -
          using the %StripPling function.
- Template change - associate the RightReports local extensions with
          the global extension (requires the global extension addition).
- RR class change - destroy the ImageControl in the destruct method.
- RREditor class - destruct calls the parent destruct (i.e. the
          DrawPaint destruct)
Version 1.20 beta ... 1 December 2008 Summary:
      Solve memory leak (causing Editor to fail to draw controls), Resizing
      issue in the editor (cursor not tracking the resize bar correctly).
      RightReportsPreviewer has PgUp, PgDown, End, Home keys associated with the
      relevant buttons in the TXAs.
      
        -  Enabled command-line switchable logging.
-  Dispose the Draw object in the destruct method of the RightReports
          class.
-  RightReportsEditor class kill method calls the parent.kill method -
          and destruct method calls the kill (if not called already).
-  RightReportsPrinter class disposes the PrintQueue and the SavQ
          properties.
-  RightReportsTree class disposes the DefnCalcsQ and the
          DelDefnFilesQ queues.
-  Template: RightReports_HResize and RightReports_VResizeControl
          templates have Min and Max report designer size (can be variables or
          constants).
-  TXAs update - RightReportsPreviewer has PgUp, PgDown, End, Home
          keys associated with the relevant buttons in the TXAs.
Version 1.19 beta ... 19 November 2008
        -  Clarion 7 compatible install
-  Template and object change - remove reference to the Record Type
          groups. Just used the record groups themselves (without the over).
          Removed the Groups method.
-  Template change - use Template variables for the prefix and record
          - rather than hardcoded.
-  Class change - use :label rather than who when getting the variable
          contents from a file's record. Fix for SQL (using external names). Who
          was not matching the name correctly to the label.
Version 1.18 beta ... 12 November 2008
        - Could not edit the Local Fields condition and value
- Internal improvements to filter
- Lookups weren't working in some cases
- Formula editor cuts off report variable values at 255 - increased
          length of value fields to 1024. This requires a dictionary change (see
          the hints on dictionary changes):
          
            - In RRDefnFields, change the length of Value to 1024
- Also change the length of ElseValue to 1024
 
- Calendar buttons are working now on the print window
- You need to re-import both the print and update windows for some of
          the above changes to take effect
- Text-boxes are printing properly now on the printing side
Version 1.17 beta ... 10 November 2008
        - Made changes to the Local Variables List - the column order was
          wrong and the data was completely wrong
- Made some changes to ImportTXR regarding importing the correct
          lookup and secondary file names
- Changes made to the report structure were not always being saved
          anymore
- Stopped the program freezing in Legacy when a report is imported
          from TXR
- ImportTXR was filling in the key name with the filter value by
          mistake
- Progress bar was not always displaying correctly when printing, but
          now it seems fine
- You can select a variable type for Global and Local variables now
          again - the list was empty
- Sorting by key works again - the records were printing in record
          order
- Because of changes made to the update window you need to re-import
            the RightReportsUpdate procedure. You don't need to re-import
          all the windows though, so you can just import RightReportsUpdateABC.txa
          or RightReportsUpdateLegacy.txa.
Version 1.16 beta - 27 October 2008
        - For MSSQL tables, the RRDefinition record has become too large. Made
          the following changes:
          
            - Changed ServerOrder length from 1024 to 512
- Changed SQLOrder length from 1024 to 512
 
- Did the same for the RRDefnSecond table.
- Some improvements in the ImportTXR procedure.
- Deleting a record caused the update window's position to act
          chaotically out of control. Fixed this.
Version 1.15 beta - 22 October 2008
        - Fixed some issues relating to keys that have descending fields.
- Opening files in Read Deny-Write mode now when printing.
- Fixed some spontaneous resizing issues.
- Added server-side filtering and field-order options for both primary
          and secondary files.
- Added the built-in variables as permanent features to the Global
          Variables list.
- Made some table changes (added fields to the end of the record
          declarations):
      RRDefinition:               ServerFilter     string (1024)
                                       ServerOrder    string (1024) 
      
      RRDefnSecond:           ServerFilter      string (1024)
                                       ServerOrder     string(1024) 
      
      RRDefnFields:            NoEdit              long 
      
      See the 
FAQ on making RR table changes for
      tips on how the implement these changes. Also, if you are using FM2 or
      FM3, don't forget to increase your table version numbers.
      
        - The windows need to be re-imported (RightReportsFunctionsABC.txa or
          RightReportsFunctionsLegacy.txa)
Version 1.14 beta - 5 September 2008
        - Improvements to the progress window
- Fixed ImportTXR - unknown filename 46 error.
- Added report width and height options.
- The PrintReport procedure has now for the greatest part been
          migrated into the RightReports classes, and the rest of the code is
          template-generated, in order to prevent the need for re-importing this
          procedure all the time. You still need to import the procedure though
          - in fact it needs to be re-imported for
          these changes to take effect. Import the
            RightReportsPrintABC.txa file (or RightReportsPrintLegacy.txa).
          Take note that importing these procedures will lose
            code in your embed points, make sure you save these.
- Some updates to the docs and FAQ.
- You can now resize an item on the graphic editor using any side of
          the bounding box, instead of just the bottom right corner.
- Added some new sizing icons as well. You need the latest
            version of draw to see these changes (version
            2.70).
Version 1.13 beta - 22 August 2008
        - More fixes the the window-going-off-screen problem - it seems stable
          now.
- Fixed some makeover code in RightReportsPremier.
- Some small amendments to the docs.
- Created a RightReportsTablesSQL.txd file that you can import into
          your dictionary if you are using an SQL backend. You don't have
          to use this (especially if you have already imported the tables), but
          if you use the usual txd, take note that the Path Name for each file
          is a tps file and hence needs to be changed. Also, the Notes
          Memo for RRDefinition will then have to be changed to a String (1024)
          and moved to END OF THE RECORD.
- Fixed some multiproj related bugs
- Added a toggle button to the Editor. When you press it in, you see
          field pictures instead of field names. This only works for cases where
          the string ONLY contains a field (in angle brackets) and no other
          text. Some pictures may not yet look as desired - please contact us at
           with suggestions. You'll need to re-import the
          RightReportsFunctionsxxx.txa file for the button to appear on our
          screen. with suggestions. You'll need to re-import the
          RightReportsFunctionsxxx.txa file for the button to appear on our
          screen.
- Added a checkbox to the RightReportsUpdate procedure's local
          RightReports extension - allows you to specify that the Files
            List on the Files Tab will not be sorted alphabetically -
          rather, it will maintain the dictionary order.
- You will no longer need to remove and re-add the Global Extension
          after re-importing the tables (should that ever happen again).
- You need Draw Version 2.68 or later
          for this version of RightReports to run.
Version 1.12 beta - 19 August 2008
        - Removed the GetStringWidth error in the RightReportsPrint procedure
          (only appears when PDF is enabled) -a re-import of the
          RightReportsPrintxxx.txa is needed.
Version 1.11 beta - 19 August 2008
        - NB: Check the version history for 1.09 for
            important table changes, etc.
- Fixed the error where blobs were causing compile errors - blobs are
          ignored now.
- Sped up the Global Extension loading process
- Fixed an error relating to the Edit window disappearing - it was
          actually off the screen
- Fixed the TXA file - it contained references to the Winevent
          Extension
Version 1.10 beta - 15 August 2008
        - See version 1.09 below
- Changed the template to not include dimensioned fields
Version 1.09 beta - 15 August 2008
        - Major structural changes - put most of the template generated code
          into classes
- Added the new Data Sources feature,
          allowing users to use data sources such as queues and view when
          designing reports.
- Added the ability to specify Relationships
          between these data sources.
- Changes made to the dictionary (see the 
            FAQ on Dictionary Changes on how to incorporate these)
          
            - Fields added to RRDefinition and RRDefnSecond:
              
            
- Fields added to the PropertiesGroup of RRDefnBandControls:
              
            
 
- Added the ability for you to specify whether a field should be
          placed on the report as a Text Box, with the
          option of enabling Rich Text Format.
- Fixed some bugs related to pressing the escape key
- Made changes allowing you to use related files that have no linking
          key specified in the dictionary
- Users could not change variable names for some reason - fixed that
- Note: You need X-Files version 1.74 or
            later for the import and export of this version of RightReports to
            work!
- Note: You need at least version 2.63 of
            Draw for this version of RightReports to work!
- Pictures involving leading symbols, such as currencies etc., work
          now.
- Many local and global variables populated by RightReports have
          become obsolete. See the FAQ on this topic
          for steps to remove them.
- Note: Many global embed points have been
            moved to a local level, and hence your code needs to be moved. Look
            here in the FAQ on how to do this.
- Lots of changes were made to most of the imported procedures, so you
          need to re-import the RightReports
            procedures (including the Import and Export procedures, if
          you are using these).
Version 1.08 beta - 24 April 2008
        - Took out the stops in the RightReportsUpdate procedure
- Added some resizing code to the RightReportsUpdate procedure. This
          is template-generated code. Just make sure that you have disabled the
          "Save and Restore Window Position" option on the procedure properties.
- Added a new window to the editor allowing users to select the
          appropriate screen picture. It is called RightReportsLookupPic. So
          additions were made to the RightReportsUpdate window to ensure that
          the EditInPlace template calls this procedure when necessary. So you
          will need to re-import this window, or add these changes to the window
          manually. You need to Import RightReportsFunctionsABC.txa (or
          RightReportsFunctionsLegacy.txa) to obtain this LookupPic window too.
        
-  Also added a new RightReportsEditFormula window, which is once
          again called to edit any formulae in the RightReportsUpdate window.
          Steps to be taken here are the same as for RightReportsLookupPic
          above.
- Some updates to the docs were made.
-  Descending keys now work for primary and secondary loops too. 
Version 1.07 beta - 16 April 2008
        - Note that you need the latest version of Draw
            (version 2.62 or later) for this version of RightReports.
          Otherwise you will get errors regarding the FitWidth,
            FitHeight and Clipped fields. 
- Made the following changes to the RightReports tables (see the FAQ
            on Dictionary Changes on how to incorporate these):
          
            - Changed the length of the following fields in RRDefinition
              
                - RRDFN:ReportOrder to 256
- RRDFN:Description to 256 
- RRDFN:PraimryFIle to 256 
- RRDFN:To1, RRDFN:To2, RRDFN:To3 to 100 
- RRDFN:From1, RRDFN:From2, RRDFN:From3 to 100 
- RRDFN:FontName to 256 
 
- Made the following changes in RRDefnFiles:
              
                - RRDFI:Name length to 256
- RRDFI:ParentFile length to 256
- RRDFI:KeyName length to 1024
- Added the following key: RRDFI:EntryTypeKey (ascending on
                  DefnCode and EntryType fields)
 
- Made the following changes to RRDefnBandControls (inside the
              PropertiesGroup)
              
                - Added RRDBC:FitWidth         long 
- Added RRDBC:FItHeight       long
- RRDBC:TextValue length to 1024 
 
- Changed the following field lengths in RRDefnCalc
              
                - RRDFC:FieldName to 100 
- RRDFC:ElseFieldName to 100
 
-  Changed the following field lengths in RRDefnSecond
              
                - RRDFS:FromValue1, RRDFS:FromValue2, RRDFS:FromValue3 to 100
                
- RRDFS:ToValue1, RRDFS:ToValue2, RRDFS:ToValue3 to 100 
 
- Changed the following field lengths in RRDefnFields
              
            
-  Changed the following field lengths in RRDefnTotal
              
                - RRDTL:Name to 100
- RRDTL:TotalName to 100
 
 
- Fixed some bug relating to the font colour in the editor
- Added code allowing you to export to Excel. You need 
            Office Inside for this though. See the section on
            Exporting to Word and Excel. 
- Added some code to enable the SQL filter. 
- Added the ReportType property to the Report editor. The user can use
          this field if he has several types of reports he wants to group
          together. 
- Major changes to the ImportTXR procedure. It should be working much
          better now.
-  Added a prompt column to the local and global variables tab. Allows
          you to enter the prompts for use variables here.
-  Changed the Report Structure List so that the header and footer
          always appears at the top and bottom of this list respectively.
-  Primary Source's range prompts can now be edited successfully .
- The Legacy parent file editor did not work.
-  Got rid of the flickering on the Print window. 
- Added the FitWidth and  FitHeight properties. In
          particular, you can set FitWidth to ensure that a string control gets
          adjusted to the length of its contents when the report gets printed.
- Added the Linking Fields
          property to Lookups that have no parent files. Basically, this allows
          you to do a lookup based on a custom relationship between files. 
Version 1.06 beta - 29 February 2008
        -  For ImportTXR, imported user variables now have prompts assigned to
          them
- Set a default sort order in the report browse for mysql applications
- Had problems with MySQL so had to rename a number of the table
          fields - all Order, Type and Condition fields. So you will need to
          re-import the RightReports tables, and remove and re-add the global
          template. This will unfortunately mean you need to re-import the
          RightReportsFunctions.TXA file too. Alternatively, you can change the
          fields directly in the dictionary. Here are the changed fields:
        - RRDFN:Type became RRDFN:ReportType
- RRDFN:Order became RRDFN:ReportOrder 
- RRDFB:Condition became RRDFB:BandCondition
- RRDBC:Type became RRDBC:ControlType
- RRDFC:Condition became RRDFC:CalcCondition
- RRDFL:Condition became RRDFC:FieldCondition
- RRDFL:Type became RRDFL:FieldType
- RRDFL:Order became RRDFL:FieldOrder
- RRDFI:Order became RRDFI:TreeOrder
- RRDFI:Type became RRDFI:ItemType 
      In the latter case you will also need to import RightReportsPrint.TXA to
      incorporate these changes into the hand-coded RightReportsPrint procedure.
      
        -  To make sure exported reports still import correctly regardless of
          these field name changes, I changed the export template a bit. For
          this to work you need the 
            latest version of XFiles, version 1.65. 
Version 1.05 beta - 15 February 2008
        -  New Feature: Badly named fields in dictionary tables can now have
          friendly names in the report editor. See the section on 
            Renaming Table Fields. 
- Added functionality allowing you to filter records in a file in the
          report at time of print. See 
            Preventing Access to Table Records. 
- Was not compiling in Clarion 6.2 and 6.1 because of a call to
          SetOpenMode. Fixed this.
-  Key range prompts were not appearing for a secondary loop if the
          parent file was set to None. Fixed this.
-  Order Fields for the Primary Source was displaying incorrectly
          (%KeyField)
-  Added resizing code to the Legacy window. You'll need to re-import
          the RightReportsFunctionsLegacy.txa file should you wish to see these
          changes, though. 
- Added drag-n-drop functionality for global and local variables.
- Minor tweaks to shipped examples
-  Added some documentation on how to 
            add RightReports to a multi-DLL application 
Version 1.04 beta - 24 January 2008
        -  Minor template bug fixes
- split the _rr.clw file into two, as some of these files were too big
          and causing segdef errors to occur during linking 
- Some tweaks to the ImportTXR function. Still a work in progress.
-  Added Primary Source range prompts.
-  Big fonts was making the editor crash, fixed this
-  Some minor changes to the RightReportsTables.txd file that you need
          to import. Includes things like unchecking "Exclude Empty Keys" on the
          primary keys.
-  Note: Made a change to the
          DefnCalcs file: you will need to reimport
            the RightReportsTables.txd file, or make these changes in the
            dictionary yourself (note that if you
            re-import the tables, you will need to re-import the
            RightReportsFunctions and remove and re-add the global Extension
            too). I deleted the Condition field, renamed Condition1 to
          Condition and deleted the surrounding group. The same goes for
          FieldName and Calculation fields. 
- I removed the groups in this file because FM3 (or Clarion) was not
          happy with the fact that there were variables over other variables
          within a group. This meant I needed to change the template prompts for
          these fields - I gave them new names. Then had to make some hardcode
          changes to RightReportsPrint. Hence you
            will need to reimport the RightReportsFunctions.txa file.
- For imported reports, string heights and fonts were defaulting to
          zero. 
- Secondary loops in TXR files were not importing onto the right
          level. 
- Got FreeImage to include Legacy in its global Extension. 
            Note: So you'd have to download the latest version of
          FreeImage for legacy to work.
-  Small changes to the edit window - e.g. the tabs are scrolling now.
- Added Legacy support! Yay! 
- Note: You need to download the
          latest version of Draw (version 2.60) for this version of RightReports
          to work. Go here: 
            https://www.capesoft.com/accessories/downloads.htm#draw
 
Version 1.03 beta - 30 November 2007
        -  Some table fields and names were being used explicitly by the
          template - changed this to use the values as entered in the template
          options instead
-  Added template options allowing you to specify the file extension
          of exported reports
-  Minor template fixes
-  The page form wasn't printing as it should anymore because I fixed
          the background colours for bands - they were suddenly printing white
          instead of transparent. Added a transparent property to bands which
          defaults to 1 and is available in the properties listbox. 
            Note: There were some changes made in Draw to accommodate this, so
            you need to install the latest version of Draw, namely 2.57. 
-  Added a horizontal resizing control template for the update window
          - add this to allow users to resize the property sheet
-  Fixed some totaling issues - the displayed totals weren't being
          filtered according to the selected loop in the report structure list
-  Fixed some picture size issues in the calculation editor
-  Stopped rightreports from gpf'ing if an open angular bracket is
          encountered without a closing bracket. 
            Note The change was made to RightReportsPrint. This means you
          need to re-import the RightReports functions. 
- Totalling is now available for the primary loop as well
-  Note Moved some things in
          #Localdata to %DataSection. This means you may get some compile
          warnings r.e. label duplicated. You can just delete the relevant local
          variables from via the Data button to get rid of this.
-  There was a problem with the color chooser, which was causing the
          colors to be low integers i.e. black always. Fixed that. 
- The Hide, BlockStart and BlockEnd values for the last detail on the
          report was being zeroed. Fixed that too. 
Version 1.02 beta - 16 November 2007
        -  Before there was an FQ module generated for each table in your
          dictionary. Now we have added an 
            option on the Advanced Tab allowing you to specify how many
          tables per FQ module. It defaults to 5.
-  The Global Template CPCS and Report tabs were too long, so they got
          split into two
- If you have a large dictionary, you would have been getting the
          error: Link Error: Too many segdef in file.
          This has been fixed - the size of some generated procedures have been
          reduced. 
Version 1.01 beta - 12 November 2007
        - Removed the OtherOrder field from the template, as it is obsolete.
          Also edited the RRAbleOtherOrder routine. 
- Made changes to the RightReports template, as well as EditIn.tpl,
          that allows you to now change the default destination if you are
          sending the report to a file instead of the printer
-  Note Changes to RRDefinition
          table: Made the Filter field longer to 1024. Added an EditAccess
          property.
-  Note Changes to
          RRDefnBandControls table: Added Justify, Clipped and Picture fields
          for use with strings.
- Note Changes to RRDefnSecond table:
          Changed the length of the Filter field to 1024 and added an SQLFilter
          field.
- Note When you re-import the
          RightReports tables in order to incorporate the above changes, the
          Global Template will loose its table information, so you will need to
          remove and re-add the Global RightReports Extension. We don't intend
          making very many more changes to the tables, unless it really cant be
          avoided.
-  Changed the template so that the full prototype is included in the
          generated procedures.
- The preview procedure was not returning a value, although it was
          expected to
- Gave a horizontal scrollbar to the property list, a vertical
          scrollbar to the drop down appearing when you edit a property
- There used to appear a stop if a string had a '<' without being
          followed by a '>' - this is now gone for graphic reports
- Included the FreeImage dll in the demo install
- Minor updates to the shipped example
-  Note Removed the prototype for
          the RightReportsBrowse procedure
- You can now specify a 
            picture for a string, as well as a 
            justification.
- It is now possible to 
            prevent people from editing a report, by setting the
          RRDFN:EditAccess property to 1. RightReports handles this by disabling
          all editing features on the update window. You can still view the
          report, though. The way the value of RRDFN:EditAccess is determined is
          up to you. 
- Enabled the use of other 
            report previewers, besides the built-in RightReports one. You
          will find where to set this on the General Tab of the Global Template.
          Depending on your choice, options for the chosen Previewer will appear
          on a new Tab on the Global Template. Choices include IceTips,  CPCS
          and the default ABC previewer (or handcoded - like to RPM). Just
          remember to install the necessary 3rdparty Global Template, if
          required, as in the first three cases.
-  Completed round one of the Import
            TXR procedure. Please try it out and let us know if your TXR
          does not import as desired. 
- Added new Import and Export 
          procedures. You need 
            xFiles 1.61 or later for this though.
- Added template utilities for importing the RightReports functions 
Version 1.00 beta - 17 September 2007
        - Major updates to the docs
- Remove some non-editable field, like date and time modified, from
          the property editor
-  Added a tab for the Notes on the report rather than making it just
          another field in the property editor
- Disabled the test button on the RightReportsUpdate window for now -
          Note that you need to re-import the
          RightReportsFunctions.txa file to see this change.
- The parent files for secondary loops were sometimes being determined
          incorrectly
-  Fixed the key range prompts for secondary loops - they are now
          correct and refresh when then should
-  Changed some of the procedure prototypes in the generated code to
          take an rrfqtype queue as a parameter, rather than use a global queue
-  Fixed some problems causing link errors in certain situations - the
          problem was that certain file drivers and aliases were not considered
          tables when they should have been
- In the previous release rrfq:condition was misspelt in the Global
          data. If you get a compile error of the sort: No matching prototype:
          evaluate(RightReportssimplify(a, rrfq)), this is what is causing it.
          The template should fix this but you may need to go in and back out of
          the global data.
-  On the Global General
            Tab you can now choose which report previewer to use -
          RightReports or ABC. You can also hand-code your own previewer code in
          the  RightReportsPrint
            procedure.
- Introduced the ability to 
            hide tables and fields from the files list available to the user
          on the editor 
-  Note: Made some changes to the
          dictionary: Removed the Guid fields from the imported RightReports
          tables. Also renamed all keys called "Key". You will probably want to
          delete your imported RightReports tables and re-import the new tables.
          Note: After doing this, go to the
          Global Extension, remove it and re-add it to your application.
          Otherwise all the fields disappear from the template and you will get
          millions of compile errors. You should probably also re-import the
          RightReports functions. 
-  There was an error in the RightReportsPrint procedure that crept
          in, causing everything to print very small
Version 0.07 alpha - 27 August 2007
        - Fixed some problems relating to same-file relations and relations
          not using keys
-  RightReports now works with the latest version of makeover. Note
          this means it doesn't work with earlier versions of makeover where the
          Refresh procedure still didn't take any parameters.
- You need to the older RightReports template named RepEdit if you
          have not already done so, otherwise Clarion will think the template
          registry has changed every time you reopen it.
-  Long table field names were being cut off and hence not evaluated
          correctly when printing
- You can now use <formfeed> in a string on a graphic report 
- You can now drag and drop fields from the listbox on the Fields Tab
          onto the graphic report.  Note that
          you need to re-import the RightReportsFunctions.txa file or set the
          drag and drop id's yourself as is done in the example. See the Fields
          list and also the region over the image with the scroll bars. 
- The RightReportsUpdate procedure now defaults to graphic reports
          when a new report is created
- The Primary Source filter is now working
-  No longer need to re-open the report after a new table is selected
          for the fields tab to reflect this change
- Lookup buttons on the RightReportsPrint window now work
Version 0.06 alpha - 20 July 2007
        - Now you can create a page form band for graphic reports - neat. A
          new button has been added to the RightReportsUpdate
          window. 
-  Did some internal work on using the EntryType field of the
          RRDefinition table instead of the Type field
- Wasn't shipping helps.ico with the install. Note:
          Changed the name of that icon to repHelps.ico. Its used on the RightReportsPrint window's lookup buttons. 
Version 0.05 alpha - 11 July 2007
        -  There was a problem with an Unknown Template Type (RepEdit) message
          appearing when the example is opened - Note:
          If you got this error in your own application, make sure you re-import
          the RightReportsFunctions.txa file. 
- Fixed the text example (removed the blockstart from one of the
          details) 
Version 0.04 alpha - 10 July 2007
        -  No we do not know what happened to 0.02 and 0.03 alpha.
- Renamed all global and local variables populated by RightReports to
          start with RR.
- Renamed all the imported tables to start with RR to avoid name
          clashes. Prefixes also have RR added infront. 
- Also renamed all equates starting with REP to start with RR rather.
- I know all this renaming is a pain but at least it was done early,
          and is now consistent. Apologies, of course. 
- There are only 7 procedures imported by RightReports now (as opposed
          to the previous amount which was over 50). The rest of the procedures
          are now generated a clw file which is compiled with your program: if
          URAPP was the first five characters of your
            application name, this clw file is called URAPP_rr.clw.
- Three of the procedures removed were RightReportsBind (previously
          known as RightReportsBindRep), RightReportsUnbind
            (RightReportsUnbindRep) and RightReportsAddCustomFunctions. There are global
          embeds provided (with names the same as the procedure names) to embed
          the code you used to embed straight into these procedures. 
- There are global embed points for the embed points that existed in
          the rest of the procedures generated into that clw file now too.
- Added support for text reports. 
- Note: Changed the name
            of the template in the registry from RepEdit to RightReports.
          If you have already implemented RightReports in a working app this
          means you need to export the app as text, look for all additions with
          the name RepEdit in it and change RepEdit to RightReports (only in the
          template name - you can leave the variables (e.g. %RepEdit) as is. Note: Make sure you 
            unregister the old template before registering the new one.
          Otherwise the old one could possibly stay there and Clarion will think
          a new template has been registered every time you open an app. 
- Note: Changed the names
            of some of the embed points in the template. Hint: Look for
          orphaned embeds if you already had RightReports installed in a working
          app. 
- Fixed some mutli-dll bugs
- Fixed some generate bugs - code was generating in the wrong place
- Fixed some bugs relating to a file that has a relation pointing to
          itself
- Some property box editor bugs were fixed 
- Now when you create a new detail while having selected a non-detail
          element in the report list, the detail appears in the correct place on
          the graphic editor
- Drag and drop of table fields from the Fields Tab onto the graphic
          editing region is now possible
- No longer need to re-open the window after changing the parent table
          to refresh dropdowns with lists of keys and child tables 
- The tables, keys and fields now get filled in on the global
          Extension and hold for all RightReports template instances rather than
          on the local Extension. 
- Various other bug fixes 
Version 0.01 alpha - 1 May 2007
        - First release of RightReports.