Yes, the rule of thumb is - keep the scope of anything as small local as you can do.
Something the form should know somewhere in a form method later than Init should be made a form property.
If a chain of code (functions,methods, whatever) works on a value, pass it on as parameter and when needing feedback/modification pass it on by reference.
PRIVATE variables in VFP have a very unique way of scoping I don't know of any other programming language, which is no big plus. It's not a concept that is unique in the sense of uniquely brilliant, but rather a uniquely quirky way of defining a less public variable. Private scoping as said is making a variable visible not only to a certain object but any code being called. So if a private variable is defined before calling a modal form the variable stays in scope, alive. That in itself is quite harmless, a form can then make use of it, but when the form calls a PRG, that also has that private variable in scope and it may influence the variable way or be influenced by it, maybe because it also uses that same name but for another meaning of it. You code loses its coherence, its encapsulation this way.
Private variables are a feature of VFP, which may have been of good use at some stage of the language, but has become obsolete and outdated by modern ways of coding, eg the scoping of variables and properties OOP offers. Private there rather means an opposite thing, only locally visible, only usable in the class itself and child classes, not accessible from outside.
Bye, Olaf.