Не работает OnDeactivate

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Не работает OnDeactivate

Сообщение Alexey » 11.02.2012 23:52:36

Не пойму в чём проблема: в Lazarus под Windows не работает Form.OnDeactivate. При потере фокуса окном никакой реакции, как будто обработчика события нет вообще.
Версия Lazarus 0.9.30.2, FPC 2.4.4. Windows XP 32-bit.
В чём может быть проблема? Подскажите, если есть какие нибудь идеи. Куда копать? Или это баг Lazarus?
Заранее благодарю за любую помощь.
Alexey
незнакомец
 
Сообщения: 7
Зарегистрирован: 11.11.2009 20:39:16

Re: Не работает OnDeactivate

Сообщение leo_bsv » 12.02.2012 01:12:42

У меня под linux тоже не работает...
работаю только под linux'ом под виндой проверить не могу
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Не работает OnDeactivate

Сообщение Alexey » 12.02.2012 03:11:51

Я работаю и под Linux и под виндой, но в Linux'е пока не проверял - не было необходимости. А под виндой возникла необходимость сделать программку, которая должна реагировать на деактивацию окна и выполнять при этом некоторую функцию. Очень жаль, что не получается это сделать.
Alexey
незнакомец
 
Сообщения: 7
Зарегистрирован: 11.11.2009 20:39:16

Re: Не работает OnDeactivate

Сообщение SSerge » 12.02.2012 06:14:05

Судя по вот этому: http://www.delphimaster.net/view/1-82267 , не работает и в прототипе.

Там же сказано, что нужно сделать, чтобы заработало.

Не проверял.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Не работает OnDeactivate

Сообщение Alexey » 12.02.2012 14:35:31

SSerge, спасибо за подсказку.
Сделал через Application.OnDeactivate вместо Form.OnDeactivate - работает. Делал по аналогии с приведённым вами примером.
Код: Выделить всё
procedure TForm1.ApplicationDeactivate(Sender: TObject);
begin
  // Мой код
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnDeactivate:=@ApplicationDeactivate;
end;

В приведённом по ссылке примере нет символа "@" в операции Application.OnDeactivate:=@ApplicationDeactivate. Возможно в Delphi так работает - я не знаю, но Lazarus и FreePascal требует наличия этого символа. То есть присваивается адрес обработчика.

Под виндой всё работает. Под Linux не проверял ещё, надеюсь так же будет работать.
Alexey
незнакомец
 
Сообщения: 7
Зарегистрирован: 11.11.2009 20:39:16

Re: Не работает OnDeactivate

Сообщение leo_bsv » 12.02.2012 21:23:05

Alexey писал(а):Под Linux не проверял ещё, надеюсь так же будет работать.

работает. проверено.
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 204

Рейтинг@Mail.ru