Не пойму в чём проблема: в Lazarus под Windows не работает Form.OnDeactivate. При потере фокуса окном никакой реакции, как будто обработчика события нет вообще.
Версия Lazarus 0.9.30.2, FPC 2.4.4. Windows XP 32-bit.
В чём может быть проблема? Подскажите, если есть какие нибудь идеи. Куда копать? Или это баг Lazarus?
Заранее благодарю за любую помощь.
Не работает OnDeactivate
Модератор: Модераторы
Я работаю и под Linux и под виндой, но в Linux'е пока не проверял - не было необходимости. А под виндой возникла необходимость сделать программку, которая должна реагировать на деактивацию окна и выполнять при этом некоторую функцию. Очень жаль, что не получается это сделать.
Судя по вот этому: http://www.delphimaster.net/view/1-82267 , не работает и в прототипе.
Там же сказано, что нужно сделать, чтобы заработало.
Не проверял.
Там же сказано, что нужно сделать, чтобы заработало.
Не проверял.
SSerge, спасибо за подсказку.
Сделал через Application.OnDeactivate вместо Form.OnDeactivate - работает. Делал по аналогии с приведённым вами примером.
В приведённом по ссылке примере нет символа "@" в операции Application.OnDeactivate:=@ApplicationDeactivate. Возможно в Delphi так работает - я не знаю, но Lazarus и FreePascal требует наличия этого символа. То есть присваивается адрес обработчика.
Под виндой всё работает. Под Linux не проверял ещё, надеюсь так же будет работать.
Сделал через 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 не проверял ещё, надеюсь так же будет работать.
