Microsoft KB Archive/114494

{| = PRB: Refreshed SAY Field Does Not Clear Previous Value =
 * width="100%"|

ID: Q114494

2.5x 2.6x 3.00 | 2.5x 2.6x

WINDOWS       | MACINTOSH kbprg kbprb The information in this article applies to:


 * Microsoft Visual FoxPro for Windows, version 3.0
 * Microsoft FoxPro for Windows, versions 2.5x, 2.6x
 * Microsoft FoxPro for Macintosh, versions 2.5x, 2.6x

SYMPTOMS
When the value displayed by an @ ... SAY object is refreshed, the previously displayed text is not completely cleared from the screen. This behavior will be most obvious when a short text string is displayed immediately after a long text string.

CAUSE
The values may not be completely cleared if either of the following conditions is true:

 The font of the window in which the text is being displayed is smaller than the font of the text itself. -or- The text is being displayed in Transparent mode rather than Opaque mode.

RESOLUTION
There are two ways to correct the problem of not properly clearing previous SAY values:

  Change the font of the window to be the same font as, or a larger font than the font used in the @ ... SAY objects that will be refreshed. For example, you could change the DEFINE WINDOW command from the program in the "More Information" section below to: DEFINE WINDOW test FROM 1,1 TO 15,50 ; FONT "TIMES NEW ROMAN",18 STYLE "N" In the Screen Builder, you can change the window font by choosing Layout from the Screen menu, choosing the Font push button from the Screen Layout dialog box, and then selecting the new font for the window. -or-   Change the @... SAY objects from transparent to opaque (in the STYLE clause). For example, change the @... SAY commands in the program below to the following (both in the main procedure and in the READ LEVEL SHOW procedure): @ 1,8 SAY customer.company ; FONT "TIMES NEW ROMAN", 18 STYLE "BQ" ; SIZE 1,30 Note that the STYLE clause has been changed from "BT" (Bold, Transparent) to "BQ" (Bold, Opaque). In the Screen Builder, you can change the mode of the object by first selecting the object, choosing Mode from the Object menu, and then selecting Opaque. 

Steps to Reproduce Problem
1. Run the following program:

USE (SYS(2004)+'tutorial\customer.dbf') && (FoxPro 2.x)     * In Visual FoxPro, substitute the following line instead of the line * above: * USE (SYS(2004)+'samples\data\customer.dbf') && (Visual FoxPro) CLEAR DEFINE WINDOW test FROM 1,1 TO 15,50 ; FONT "COURIER NEW",12 STYLE "N" ACTIVATE WINDOW test

@ 1,8 SAY customer.company ; FONT "Times New Roman",18 STYLE "BT" ; SIZE 1,30 @ 5,10 GET choice ; PICTURE "@*HN refresh" SIZE 2,8,1 ; DEFAULT 1 VALID choiceval

READ CYCLE SHOW rdshow

RELEASE WINDOW test CLOSE DATABASES

FUNCTION choiceval    &&  choice VALID SKIP SHOW GETS RETURN                && END FUNCTION choiceval

FUNCTION rdshow       && Read Level Show @ 1,8 CLEAR TO 2,38 @ 1,8 SAY customer.company ; FONT "TIMES NEW ROMAN", 18 STYLE "BT" ; SIZE 1,30 RETURN                && END FUNCTION rdshow 2. When the window is activated, choose the Refresh push button several times. Note that longer company names and the lower portion of the company names are not cleared completely. Additional reference words: FoxMac FoxWin VFoxWin 2.50 2.50a 2.50b 2.50c 2.60 2.60a 3.00 KBCategory: kbprg kbprb KBSubcategory: FxprgUdwindow Keywords         : FxprgUdwindow Version          : 2.5x 2.6x 3.00 | 2.5x 2.6x Platform         : MACINTOSH WINDOWS
 * }