>Its actually right that you'll also get this error if the form in question is called from When or Valid Event or in general, if When or Valid Event is in the calling stack. I tested it by calling the next form through the KEYPRESS Event and it worked. Also I discovered that in the forms that the SETFOCUS was working, the form(s) had been called from other events Not from When or Valid Event
The solution to this is not to call other forms from valid(), when(), rangehi(), rangelo() because these forms may contain setfocus somewhere in them. You may set a flag in any of these methods and return .t., and then in lostfocus check for this flag, call the form, reset the flag. The flag would be best set as a property of the object, so each object would have its own.
Also, if validation should return .f., then your lostfocus should do a NoDefault, to prevent the control from actually losing the focus.