Hi Don,
the debugger will display the DO FORM line, because actually no code runs and that code was the last executed. As the form is modal, this is quite normal. If you had no modal form running, the line could be the READ EVENTS line.
The .Default property would set the focus behaviour quite the way you describe it: That control will be triggered by ENTER or RETURN or STR+ENTER/RETURN (but not TAB). The .Cancel property set .T. would let the control react to ESC.
Look up the Default and Cancel properties for further details.
Other reasons, a control doesn't get focus is, it's disabled (Enabled = .F.), then the TAB could trigger to set the focus down the line of controls in .Taborder until it finds an enabled control, which may always end at the button. (.Readonly may be the better option to let a control being "focusable" but it's value writeprotected). And a control can refuse focus in the When()-Event by returning .F. there.
Also a control may set the focus not to the next but the second next control by returning 2 (or some other number, negative will backtab) in it's Valid event or to some known control with the Setfocus()-Method.
Bye, Olaf.