>The best, and correct, approach is to use VALID for validation, thus the name. RETURN=.F. measn failed validation.
Theoretically, yes. But since VFP3 we have to live with this limitation that SetFocus() can't be called if there's a .valid anywhere upstairs the call stack. This means that any new form called during validation must have absolutely no .Setfocus() anywhere, because there's a pending .valid (or .RangeLow(), .RangeHigh() and a couple of others). If this limitation didn't scope out to called forms, we could live with that... but it did, so for ten years now we live with that.
Now someone should correct me - I think I have read somewhere that this limitation is removed in VFP9... if that is true, we may rethink a few things.