Страница 1 из 1

Ловим получение фокуса ввода у MDI окон

Добавлено: 24 окт 2007, 18:15
Hastur
Всем привет.
В программе есть куча MDIChild окон динамически создаваемых из dll библиотек. Никак не могу отловить момент когда одна форма теряет фокус а другая получает. Пробовал ловить сообщение WM_MDIACTIVATE через Application.OnMessage и ещё написанием обработчика на сообщение. Но я так подоозреваю (почитав MSDN) что это сообщение не прилетает главной форме...
Короче как отловить переход фокуса от одного окна к другому? Желательно всётаки отследив какоенить сообщение

Re: Ловим получение фокуса ввода у MDI окон

Добавлено: 24 окт 2007, 18:59
Duncon
ActiveMDIChild не катит уже?

Re: Ловим получение фокуса ввода у MDI окон

Добавлено: 25 окт 2007, 07:17
Hastur
Понимаешь мне надо отлавливать момент переключения между окнами. Мне чё создавать отдельный поток и постоянно проверять предложенное тобой свойство?

Re: Ловим получение фокуса ввода у MDI окон

Добавлено: 25 окт 2007, 10:34
Duncon
Как тебе такой варриант

Код: Выделить всё

procedure TForm1.FormCreate(Sender: TObject);
begin
  Screen.OnActiveFormChange := UpdateObjects;
end;

procedure TForm1.UpdateObjects(Sender: TObject);
begin
  if not (ActiveMDIChild = Nil) then
    if ActiveMDIChild is TForm2 then Caption := TForm2(ActiveMDIChild).Caption;
end;

Re: Ловим получение фокуса ввода у MDI окон

Добавлено: 26 окт 2007, 17:30
Hastur
Спасибо Duncon! Очень помог! Как я сам не догадался покопать в сторону объекта Screen.