How to force a focus on a component before the Form is shown

delphi, focus, setfocus

Solution

The simplest way to achieve your goal, in my view, is to assign to the `ActiveControl` property for the form. You can do this before showing the form. When you form is later shown, the VCL framework will ensure that the `ActiveControl` is given input focus.

From the documentation:

If the form does not have focus, `ActiveControl` is the control on the form that will receive focus when the form receives focus.

Problem

I have to show (with `ShowModal`) a Form with many `TEdit` but I want to force the focus on a `TEdit`, but not always the same, depending on the context. I can't use `SetFocus` before the `ShowModal` (because the Form is not activate) and use the component `Name` or `Tag` is not convenient in my application. Do you have an idea ?

Original source