Apply rich text effects in Visual FoxPro reports

This article describes how to underline parts of a field from a table that contains rich text formatting and display that formatting on a report.

Original product version:   Visual FoxPro
Original KB number:   246088

Summary

From time to time, it would be good to have the ability to add formatting effects to individual words within Visual FoxPro reports. This can be accomplished with the Rich Text ActiveX control, a general field and an OLE bound control on a Visual FoxPro report.

More information

This example shows how to underline parts of a field from a table and display that formatting on a report. You can apply any effect or combination of effects possible in Rich Text to your example.

  1. Open Visual FoxPro and create a new report.

  2. Add a Picture/Active-X Bound Control to the detail band of the report. Set its FIELD property to Dcolor.gcolor.

  3. Save the report as rtfDemo.

  4. Paste the following code into a new program. Save that program in the same directory as the report, then run it.

    CLOSE ALL
    CLEAR ALL
    tSafety = SET("safety") &&Store SET status of Safety to a variable
    SET SAFETY OFF &&Check to see if the Dcolor table exists
    IF FILE("dcolor.dbf")
    USE dcolor EXCLUSIVE
    ELSE
    CREATE TABLE dcolor (dcolor c(20),gcolor g) &&Create and add records if DColor table doesn't exist
    INSERT INTO dcolor (dcolor) VALUES ("Red")
    INSERT INTO dcolor (dcolor) VALUES ("Green")
    INSERT INTO dcolor (dcolor) VALUES ("Blue")
    INSERT INTO dcolor (dcolor) VALUES ("Purple")
    INSERT INTO dcolor (dcolor) VALUES ("Orange")
    INSERT INTO dcolor (dcolor) VALUES ("Yellow")
    ENDIF
    _rtfFile = SYS(3)+".rtf" &&Create a legal file name with a .RTF extension
    *NOTE: The file must have a .RTF extension to work properly
    SCAN &&Create a Richtext OLE bound control in the general field of the dColor table
    SET TEXTMERGE TO &_rtfFile NOSHOW
    SET TEXTMERGE ON
    *!!IMPORTANT!! The following richtext formatting line(s) need to be
    *included as one line in your program.
    \\{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl
    {\f0\fnil\fcharset0 Times New Roman; }} \viewkind4\uc1\pard\f0\fs20
    The big \ul <<ALLT(dcolor.dcolor)>>\ulnone dog\par}
    SET TEXTMERGE TO
    APPEND GENERAL gcolor FROM &_rtfFile CLASS "RICHTEXT.RICHTEXTCTRL.1"
    ENDSCAN
    SET SAFETY &tSafety
    ERASE &_rtfFile
    
    REPORT FORM rtfdemo PREVIEW NOCONSOLE
    USE
    CLOSE ALL
    

When the report is printed, the color is underlined in the text.

Note

In some cases, the print preview of RTF formatted text does not look correct. However, when the string is printed, the output is formatted correctly.

Tip

To generate a string similar to the one in the above code, create a template for your expression in WordPad (or other application capable of creating Rich Text Files). Underline, color, and apply any other formatting to your text, then save it to a .RTF file. Open the .RTF file in Notepad and copy/paste the Rich Text code into your Visual FoxPro program.

(This application requires the RichTX32.OCX control. Visual FoxPro 3.0 and 3.0b do not ship with RichTX32.OCX.)