Microsoft KB Archive/103829

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 13:47, 20 July 2020 by X010 (talk | contribs) (Text replacement - "<" to "<")

HOWTO: Right-Justify Numeric Fields with @ ... SAY

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

Last Reviewed: January 2, 1999
© 1999 Microsoft Corporation. All rights reserved. Terms of Use.