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

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
Аватара пользователя
Hastur
Сообщения: 18
Зарегистрирован: 05 авг 2007, 18:09

24 окт 2007, 18:15

Всем привет.
В программе есть куча MDIChild окон динамически создаваемых из dll библиотек. Никак не могу отловить момент когда одна форма теряет фокус а другая получает. Пробовал ловить сообщение WM_MDIACTIVATE через Application.OnMessage и ещё написанием обработчика на сообщение. Но я так подоозреваю (почитав MSDN) что это сообщение не прилетает главной форме...
Короче как отловить переход фокуса от одного окна к другому? Желательно всётаки отследив какоенить сообщение
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

24 окт 2007, 18:59

ActiveMDIChild не катит уже?
Аватара пользователя
Hastur
Сообщения: 18
Зарегистрирован: 05 авг 2007, 18:09

25 окт 2007, 07:17

Понимаешь мне надо отлавливать момент переключения между окнами. Мне чё создавать отдельный поток и постоянно проверять предложенное тобой свойство?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

25 окт 2007, 10:34

Как тебе такой варриант

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

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;
Аватара пользователя
Hastur
Сообщения: 18
Зарегистрирован: 05 авг 2007, 18:09

26 окт 2007, 17:30

Спасибо Duncon! Очень помог! Как я сам не догадался покопать в сторону объекта Screen.
Ответить