DOCUMENT:Q155388  14-DEC-1999  [foxpro]
TITLE   :PRB: CLEAR RESOURCE Does Not Appear to Work
PRODUCT :Microsoft FoxPro
PROD/VER:WINDOWS:5.0,5.0a,6.0
OPER/SYS:
KEYWORDS:kbvfp500 kbvfp600

======================================================================
-------------------------------------------------------------------------------
The information in this article applies to:

 - Microsoft Visual FoxPro for Windows, versions 5.0, 5.0a, 6.0 
-------------------------------------------------------------------------------

SYMPTOMS
========

The CLEAR RESOURCES command, a new command for Visual FoxPro 5.0, does not
appear to work. When Visual FoxPro displays a bitmap, picture, cursor, icon, or
font resource, Visual FoxPro caches the resource to optimize performance. If you
use a resource of the same name (for example, a different bitmap with the same
name as the one already cached), Visual FoxPro does not reload the resource.

Therefore, clearing a resource file is useful for removing a graphic image from
memory and forcing Visual FoxPro to reload an image of the same name from disk.
For example, a report might display graphic images from a database, all of which
are named TEMP; however, because they all have the same name, Visual FoxPro does
not reload each new graphic unless the existing one has been cleared from memory
using the CLEAR RESOURCES command.

CAUSE
=====

This scenario occurs when a resource is in use when you issue the CLEAR
RESOURCES command.

RESOLUTION
==========

The CLEAR RESOURCES command acts only on resources that are not currently in
use. In the following example, the "Toggle bitmap" button attempts to clear a
resource that is in use. The click code for the "Update form" button saves the
current value of the picture property, sets the picture property to "", clears
the resource (which is no longer in use), and resets the picture property back
to its original value. Note that the specific resource is cleared by name. Any
remaining resources are not cleared. The resources must be cleared because of
caching for performance reasons. You want to clear only the resource you want to
update so that any others will still be in the cache.

STATUS
======

This behavior is by design. CLEAR RESOURCES acts only on resources not currently
in use.

MORE INFORMATION
================

1. Run the following code from a .prg:

         PUBLIC oform
         oform=CREATEOBJECT('form1')
         oform.Show

         DEFINE Class form1 AS Form
           Top = 0
           Left = 0
           Height = 234
           Width = 207
           DoCreate = .T.
           Caption = "Clear Resource Demo"
           Name = "form1"
           changedbmp = .F.
           ADD OBJECT image1 AS Image WITH ;
             Stretch = 2, ;
             Height = 120, ;
             Left = 36, ;
             Top = 12, ;
             Width = 144, ;
             Name = "Image1"
           ADD OBJECT command1 AS CommandButton WITH ;
             Top = 156, ;
             Left = 60, ;
             Height = 27, ;
             Width = 96, ;
             Caption = "\<Toggle bitmap", ;
             Default = .T., ;
             Name = "Command1"
          ADD OBJECT command2 AS CommandButton WITH ;
             Top = 192, ;
             Left = 67, ;
             Height = 27, ;
             Width = 84, ;
             Caption = "\<Update form", ;
             Name = "Command2"

           PROCEDURE image1.Init
             Clear RESOURCES
             COPY FILE home()+'wizards\wizbmps\wzclose.bmp' TO 'bmptemp.bmp'
             THIS.Picture='bmptemp.bmp'
           ENDPROC

           PROCEDURE command1.Click
             IF THISFORM.changedbmp=.F.
               THISFORM.changedbmp=.T.
               COPY FILE home()+'wizards\wizbmps\wzedit.bmp' TO 'bmptemp.bmp'
             ELSE
               THISFORM.changedbmp=.F.
               COPY FILE home()+'wizards\wizbmps\wzclose.bmp' TO 'bmptemp.bmp'
             ENDIF
             CLEAR RESOURCES
             THISFORM.REFRESH
           ENDPROC

           PROCEDURE command2.Click
             LOCAL lcPictemp
             lcPictemp=thisform.image1.Picture
             THISFORM.image1.Picture=''
             CLEAR RESOURCES (lcPictemp)
             THISFORM.image1.Picture=lcPictemp
           ENDPROC
   ENDDEFINE

2. Press the "Toggle bitmap" button. Note how the button does not update the
   image even though it contains a CLEAR RESOURCES command in its click code.

3. Press the "Update form" button. Now the image is updated.

REFERENCES
==========

Visual FoxPro Help file.

Additional query words: kbdse Vfoxwin

======================================================================
Keywords          : kbvfp500 kbvfp600 
Technology        : kbVFPsearch kbAudDeveloper kbVFP500 kbVFP600 kbVFP500a
Version           : WINDOWS:5.0,5.0a,6.0

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS
PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.  MICROSOFT DISCLAIMS
ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO
EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR
ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL,
CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF
MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO NOT ALLOW THE EXCLUSION
OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES
SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1999.