I agree. I'm not a fan of NODEFAULT in LostFocus(). What I'm going to do is to let the valid run it's normal way and in the LostFocus, I'll put the messagebox and I'll set a form property. I'll have to reset the property in the gotfocus() of all the other controls, but it will work.
>>Unfortunately, I'd really like to stay away from the Wait Window for this particular thing and use a messagebox instead.
>>
>>It looks like Dorin's method is the best way for me.
>>
>
>Mine is an explanation not a solution.
>
>Valid is not remarkable.
>1. I recommend you to avoid to use NODEFAULT in LOSTFOCUS ( IT IS WRONG )
>
>better:
>
>* txt valid
>RETURN thisform.chkTxtBox()
>
>
>but:
>
>* command gotfocus
>if thisform.txtOk
> keyboard '{enter}' PLAIN
>endif
>thisform.txtOk = .F.
>
>destroy keyboard tab moving.