Вы также можете ввести в вашу модель состояние, которое отслеживает, нуждается ли окно в фокусе, как вы описали здесь, и использовать обработчики onFocus в других формах, которые программно устанавливают фокус обратно в окно сетки.
[Редактировать] Копия моего комментария:
Вы можете зарегистрироваться на Событие onShow форм с сеткой. (Если вы реализуете его, обязательно сделайте его каким-либо образом настраиваемым, чтобы минимизировать зависимость сетки от существующего макета приложения. Возможно, предоставляя метод, который вызывается формами, который, в свою очередь, запускает регистрацию события сетки в вызывающей форме для события onShow)
Для уточнения регистрации события:
Вы можете подключать обработчики событий программно. В интернете есть множество намеков об этом. У меня нет Delphi, поэтому я не могу скопировать рабочий код сейчас.
Псевдокод для программного добавления события!
myform.onShow=myGrid.formOnShowHandler;
formOnShowHandler имеет ту же сигнатуру, что и функции, сгенерированные IDE для событий onShow. У него есть параметр, который вы можете использовать, чтобы выяснить, какая форма вызвала обработчик, так что вы можете повторно использовать функцию и просто поместить форму в фоновый режим и снова показать свою форму сетки (которая будет, например, родителем сетки).