Frequently asked questions - FAQ

1. General

1.1. I have read this FAQ but I haven't found a solution for my problem. What shall I do next?

Technical support is provided via email at: support@eqeus.com. Please contact us with any problem you have, we'd be happy to help you.
  • If you have problems with a particular report, please attach it to your email as well (if possible). Also, if your report is not too entangled with your environment and you'd be able to provide us with sample data that we could use to run your report, it would help us a lot in finding out what the problem is.
  • One more thing that can help us to find out what's wrong is generating a log file: Before calling SetParams(), please add loSession.initLog(). Then, when you run XFRX next time, _XFRX.log file will be generated in the default directory. This file logs all errors that are trapped during XFRX execution. Attaching this file to the email is a big help for us as well.

2. Installation and setup

2.1. I am evaluating XFRX. It works fine in development, but when I try to compile the demo in my project, the VFP quits or crashes. Is that because it is a demo version?

This is an issue in the demo version of XFRX - it cannot be included into VFP projects, it makes VFP crash (this is a negative side effect of a decompilation protection). The workaround is to invoke XFRX via macro substitution:
loSession = EVALUATE[XFRX('XFRX#INIT')]
This way XFRX.APP does not get into the project and you will be able to compile without problems. The commercial version is not affected by this problem.

2.2. XFRX works fine on some computers but on others I am getting this error:" Library xfrxlib.fll is invalid" or "cannot load xfrxlib.fll". The SetParams method returns -6.

The xfrxlib.fll library requires three DLLs from Microsoft to be installed: gdiplus.dll, msvcr71.dll and msvcp71.dll.

XFRX 24.0

Since this version xfrxlib.fll requires Microsoft VC++ Runtime 10.0 DLLs (msvcr100.dll and msvcp100.dll).

2.3. XFRX doesn't seem to be creating a private data session for my reports even though their private data session flag is set on. We are using VFP 6.

Please make sure you have installed the latest VFP 6 service pack. The session class is not available until SP3.

2.4. Does XFRX change SET PATH TO?

No, XFRX doesn't  SET PATH TO.  XFRX full respects SET PATH TO in your applications.

3. Licensing

3.1. We will eventually go to Version 9 of Visual Foxpro. But right now we are using VFP8. Should I order your product for Version 8 or Version 9? If I ordered VFP8 what will it cost to upgrade to VFP9?

We do not differentiate individual VFP versions - once you purchase XFRX, you can use it in VFP 5, 6, 7, 8 and 9 without any further costs.

4. Distribution

4.1. Do I have to distribute my reports (FRT and FRX) files with my application or is XFRX able to access the reports (and other resources) built in into the exe?

XFRX is able to access your built-in reports. To do this, add XFRX.FXP into your project and compile it into your exe as well. This option is not available for the XFRX evaluation version as it is distributed as XFRX.APP which can't be included in the exe.

5. XFRX output - general

5.1. The paper size is wrong, landscape reports are generated as portrait.

Make sure you don't delete all information from the EXPR field of the first record of the page. XFRX doesn't use printer settings stored in the FRX file and uses PAPERSIZE and ORIENTATION values from the EXPR field of the first record. If they are not there, the default value is used, which can result in a wrong orientation or a wrong paper size.

5.2. In my reports, I am using graphs (word documents, bar codes) that are embedded in a general field. When I tried to print of these reports with XFRX it does not print the embedded general field.

XFRX for VFP 8.0 is able to print BMP and JPEG pictures stored in general fields, but ActiveX components are not supported. This restriction does not apply to XFRX for VFP 9.0, which is able to process any content of general fields, including ActiveX components.

XFRX 16.1

XFRX can extract WMF from OLE presentation record since XFRX 16.1.

5.3. My report has a variable which is replaced with ".F." in the output document.

If the variable is declared as LOCAL, XFRX for VFP 8.0 won't be able to see it (the variable is out of scope in XFRX), changing it to PRIVATE or PUBLIC fixes this problem.

5.4. Erorr message "Do nesting level exceeded"

The error message cause, if XFRX cannot load API function from hndlib.dll, zlib.dll or xfrxlib.fll under VFP 7,8,9.

6. XFRX output - Excel specific questions

6.1. I am finding that the Excel output feature is creating a lot of extra boxes and not making columns like I thought.

This is how the XLS output works - it creates a column wherever an object starts or finishes. You may achieve better results if you try aligning the objects. Please have a look at the Excel specific features chapter in the Developer's guide for some ideas how you can make the output look better.

7. XFRX output - XPS specific questions

7.1. What is XPS?

The XPS [XML Paper Specification] is a new document specification developed by Microsoft. You can find more information about XPS at:

7.2. Does XFRX require .NET framework to generate XPS?

No. XFRX generates the document on its own from scratch so all you need is VFP and XFRX. 

7.3. How can I view the XPS documents?

You need an XPS viewer. If you are running Windows Vista you already have one as it is included with .NET Framework 3.0. For Windows XP and Windows Server 2003 you can download the viewer from http://www.microsoft.com/whdc/xps/viewxps.mspx.

8. XFRX output - HTML specific questions 

8.1. The footer of one page overprints the header of the next page. How can I fix this problem?

When printing from Internet Explorer, the browser automatically adds a line at top and bottom of each page - so the actual page is really shorter by these two lines. When generating HTML documents, XFRX makes the page height shorter, too, so that the report engine wrapped the page "early" and the output would fit to the shortened page. However, when an XFF file is converted to HTML (which happens, for example, when the report is exported from the XFRX previewer), the XFRX doesn't rearrange the document - it uses the same page layout as you see in the previewer, and this page layout is too long for the shortened HTML pages. There are two options how to deal with this:
  • When converting the output to HTML, add losession.shrinkHeight(0) before running losession.TransformReport(). This will lengthen the page and the result would look fine - but, if you try to print this from MSIE, the pages might be too long to fit on paper (depending on the footer size).
  • You can intercept the HTML export event (see and process the report again, directly to HTML. For more information about interception the export events, please see "Registering an extension handler" chapter in the developer's guide.

9. XFRX Previewer 

9.1. How can I tell what action the user did in the previewer - whether they just previewed the report or printed or exported it?

You can setup an extension handler that can react to the Export and Print events. The extension handler can cancel the action, force exporting / printing parameters or just store the information that the action was performed. Please see more information in the Developer's guide, Registering an extension handler chapter.


10. XFRX output - PDF specific questions

10.1. Is there possible to open the saved PDF file using XFRX to view or print?

No, XFRX not is PDF viewer.

It will be possibly in XFRX 19.0 with some limitations.

11. VFP 9.0 related questions 

11.1. I am currently using XFRX in VFP 8.0 and would like to upgrade to VFP 9.0. Do you need to modify any code to start using XFRX for VFP 9.0?

Yes, you need to modify your code a bit if you want to start using the new features in VFP 9.0. If you do not modify how XFRX is called in your application, it will still work fine after you upgrade to VFP 9.0 and you don't need to change anything if you are satisfied with the results. If you, however, want to use the VFP 9.0 native report engine in cooperation with XFRX, you need to modify your code as described in the Developer's guide, Running XFRX chapter. 

11.2. I am running XFRX in VFP 9.0 but the new reporting features in VFP 9.0 (e.g. multiple detail bands) don't seem to be working.

Please make sure you are calling XFRX using the new VFP 9.0 syntax: REPORT FORM xxx OBJECT loXFRXListener. The new reporting features in VFP 9.0 are not supported when using the VFP 8.0 calling syntax.

XFRX 17.0 supports multidetail bands.

11.3. I am trying to run XFRX in VFP 9.0 but I am getting 'Class definition XFRXLISTENER is not found.' and 'Wrong argument type'.

You are either using XFRX.FXP from VFP 8.0 or earlier or, if you are running the source code version, you need to modify XFRX.H, uncomment the "#DEFINE VFP9" line and recompile XFRX.

11.4. When users change the Windows display setting to 150%, when showing a report using the ReportListener, it cuts off the canvas of the report. Outside a certain area it just displays grey, also when I try to resize the preview container.

Reporting Apps
2014.07.04 Release
This release fixes a bug in ReportOutput.app and ReportBuilder.app that didn't handle higher DPI displays properly (thanks to Joel Leach). see  https://github.com/VFPX/ReportingApps




1.

Check "Disable display scaling on high DPI settings" in exe shortcut properties on Compatibility page

2.

Call at start application API function SetProcessDPIAware()

DECLARE INTEGER SetProcessDPIAware in WIN32API 
=SetProcessDPIAware()
3.Change DPIAware support in manitest file for you exe (solution depends if you have VFP 9.0 SP2 or not)
https://west-wind.com/wconnect/weblog/ShowEntry.blog?id=890
https://kevinragsdale.net/is-your-app-dpi-aware/
4.Call method PrintDocument(). 

11.5.  Property CALLADJUSTOBJECTSIZE is not found. 

 This property was added in VFP 9.0 SP2. Please, check if is VFP RT 9.0 SP2 (9.0.0.5721) on computer  - https://www.berezniker.com/content/pages/visual-foxpro/vfp-90-versions


12. Virtualization platforms

12.1 GoGlobal - XFRX identify processor achitecture as AMD64

GoGlobal don't set PROCESSOR_ARCHITECTURE variable for 32 bit application. Work around is set he variable manualy before calls XFRX.

* Christof.W.
Declare SetEnvironmentVariable in Win32Api String, String
SetEnvironmentVariable("PROCESSOR_ARCHITECTURE", "x86")