Microsoft KB Archive/145929

= PRB: Visual FoxPro Creates Public Variable for ControlSource =

Article ID: 145929

Article Last Modified on 9/30/2003

-

APPLIES TO


 * Microsoft Visual FoxPro 3.0 Standard Edition
 * Microsoft Visual FoxPro 3.0b Standard Edition

-



This article was previously published under Q145929



SYMPTOMS
In a form, the scope of a variable set as a control source is public. This variable is declared in a program. By default, a variable declared in a procedure is private, so you would expect this variable to be private.



CAUSE
The form is running in a modeless environment. When the form is modeless, program execution does not pause after the form is displayed. When the program is completed, control is returned to the Command window. If the form is still displayed when you return to the Command window, users can input data. This means that the input variables need to be accessible. To prevent errors, Visual FoxPro automatically scopes input variables as public when the Command window is active. So, if the source of the data of a control is a variable, its scope is changed to PUBLIC when the Command window is accessed.



RESOLUTION
Use a modal form or a READ EVENTS to pause program execution and prevent the scope of the variable from changing.

You can also declare the ControlSource variable as a property of a form to scope it to the form object.



STATUS
This is by design.



Steps to Reproduce Behavior
 Create a new form. Add a text box to the form. Change the ControlSource property of the text box to cCity.  Create a program that contains the following code: cCity="Atlanta" DO FORM DISPLAY MEMORY like cCity  Run the program. The variable cCity is private.</li>  When control is back in the Command window, type: DISPLAY MEMORY like cCity The variable is public. </li></ol>

To execute a form, you can use the syntax DO FORM LINKED. The LINKED keyword causes the form to be released when the variable that references the form object goes out of scope. By not including the LINKED keyword, you ensure that the form is visible when the variable that references it goes out of scope. In the example, the reference to the form is released, but the form is still visible.

Additional query words: VFoxWin

Keywords: KB145929

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.