Microsoft KB Archive/103829

{| = HOWTO: Right-Justify Numeric Fields with @ ... SAY =
 * width="100%"|

ID: Q103829

The information in this article applies to:


 * Microsoft Visual FoxPro for Windows, versions 3.0, 5.0, 5.0a, 6.0
 * Microsoft FoxPro for Windows, versions 2.5, 2.5a, 2.6
 * Microsoft FoxBASE+ for the Macintosh, version 2.01, 2.6

SUMMARY
If a proportional font is used with @ ... SAY commands to output fields to a printer, the fields will not appear right-justified.

To work around this problem, the following code example could be implemented in a coded report to create right-justified numeric fields with a proportional font.

USE \foxprow\tutorial\customer.dbf SET PRINT FONT "Arial",12 && sets the font for @ ... SAYs to print SET DEVICE TO PRINT mrow=5               && the beginning print row

DO WHILE RECNO<15  && prints the first 14 records

* The following line converts the numeric field to a     * string and adds commas for formatting

strytd=TRANSFORM(ytdpurch,"999,999.99") mslot=LEN(strytd) && the number of characters in the field mcolumn=30        && the position for the rightmost character

* The following loop prints one character at a time from right * to left until the specified position in the field is a space

DO WHILE SUBSTR(strytd,mslot,1)<>" "

@mrow,mcolumn SAY SUBSTR(strytd,mslot,1) mslot=mslot-1     && decrement position of field to look at         mcolumn=mcolumn-1  && decrement printer column

ENDDO

SKIP              && move to the next record mrow=mrow+1       && increment printer row

ENDDO SET DEVICE TO SCREEN SET PRINT TO

Additional query words: number report justify align right foxbase+/mac
Keywords         : kbPrinting kbVFp300 kbVFp500 kbVFp600 kbVFP260 kbVFP250 kbVFP250a Issue type       : kbhowto
 * }