Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > OnFocus для формы


Автор: Grig 15.6.2005, 08:03
Здравствуйте!
Помогите пожалуйста найти событие, когда форма приобретает фокус.
Или чем бы его заменить?

Автор: Snowy 15.6.2005, 09:12
OnActivate

Автор: Grig 16.6.2005, 03:34
OnActivate не помогает.
Ситуация такова: c Form1 методом ShowModal вызывается Form2 потом Form2 закрывается, в фокусе остается Form1 и вот этот-то надо словить, а OnActivate его не отлавливает.
Я вообще-то уже повесил на Form2.OnClose, все работает, но думаю, это не очень корректно.

Автор: Snowy 16.6.2005, 09:36
Цитата(Grig @ 16.6.2005, 03:34)
c Form1 методом ShowModal вызывается Form2 потом Form2 закрывается, в фокусе остается Form1 и вот этот-то надо словить

А в данном случае Form1 и не теряет фокуса. Поэтому при возврате OnActivate и не срабатывает, т.к. фокус никуда и не уходил.
Никакого события тут и не происходит.
Остается только ждать, когда закроется форма2 и продолжить выполнение.

Цитата(Grig @ 16.6.2005, 03:34)
Я вообще-то уже повесил на Form2.OnClose, все работает, но думаю, это не очень корректно.

Это действительно не очень корректно.
Пиши свой код сразу после Form2.ShowModal.
Пока вторая форма не закроется, первая форма будет ждать.
Как закроется, сразу пойдет код, который следует за ShowModal.
Проверь:
Код

  Form2.ShowModal;
  ShowMessage('Форма 2 закрылась!');

И всего делов. Сообщение появится только после того, как закроется вторая форма.

Автор: Grig 17.6.2005, 03:46
Да, действительно, это выглядит намного удачнее, а я даже и не думал, что после команды ShowModal останавливается обработка кода..
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)