Обнаружена проблема, когда OnActive для MainForm активирует другую форму.
TMainForm.OnActivate;
begin
ChildForm.ShowModal;
end;
Фокус управления установлен, но не работает. Работа вокруг, которую я обнаружил, отправляла PostMessage (Handle, WM_SETFOCUS, 0, 0); к ручке формы.
procedure TChildForm.FocusControl(AWinControl: TWinControl);
begin
try
// http://stackoverflow.com/questions/7305296/tedit-focus-caret
PostMessage(Handle, WM_SETFOCUS, 0, 0);
PostMessage(AWinControl.Handle, WM_SETFOCUS, 0, 0);
if AWinControl.CanFocus then
AWinControl.SetFocus;
except
on E: Exception do
begin
Error(Self, E);
end;
end;
end;