>>>I have only tested this code for the conditions in it. There may be other factors that prevent a control from receiving focus, like visible property.
>local loMinControl
>loMinControl = .null.
>for each loControl in ThisForm.Controls
> if isnull(loMinControl)
> if upper(loControl.BaseClass) <> "GRID" and pemstatus(loControl, 'SetFocus', 5) and loControl.Enabled
> loMinControl = loControl
> endif
> loop
> endif
> if upper(loControl.BaseClass) <> "GRID" and pemstatus(loControl, 'SetFocus', 5) and loControl.Enabled
> if loControl.TabIndex < loMinControl.TabIndex
> loMinControl = loControl
> endif
> endif
>endfor
><b>thisForm.oMinControl = loMinControl</b>
>
>>
>>That works.
>
>Or, you can add a property to your form. Run this code one time in form.init(), and when you need to setFocus you can issue thisForm.oMinControl.setFocus().
This brings the idea of using a property to hold the field we would like to use as the first focus of the form. We could just maintain that field when building the form. However, we don't have to think about it if we do it here. We just have to make sure the tab index is well set.