procedure WMSysCommand(var Msg: TWMSysCommand);message WM_SYSCOMMAND;
...
Сворачивание формы
Как отловить момент если форма сворачивается,тогда выполнить что-либо?
Код:
Дальше обрабатуем сообщение
Код:
procedure TForm1.WMSysCommand;
begin
if Msg.CmdType = SC_MINIMIZE
then
{Сдесь делаем что нужно}
else
inherited;
end;
begin
if Msg.CmdType = SC_MINIMIZE
then
{Сдесь делаем что нужно}
else
inherited;
end;
Кроме сообщения WM_SYSCOMMAND есть еще событие Application.OnMinimize, которое возникает при минимизации главной формы приложения или вызове метода Application.Minimize. Но правильней все-таки будет с помощью WM_SYSCOMMAND.
Или кинуть на форму невизуальный объект ApplicationEvents, в котором лёгкими движениями мышки назначить обработчик событию OnMinimize.
А проще всего вручную назначить обработчик события OnMinimize для объекта Application
Код:
//в конструкторе формы
Application.OnMinimize := Self.My_Function;
Application.OnMinimize := Self.My_Function;
Указанная фукнция должна иметь один параметр Sender: TNotifyEvent
Цитата: el scorpio
А назначить обработчик событию OnHide не получается?
Или кинуть на форму невизуальный объект ApplicationEvents, в котором лёгкими движениями мышки назначить обработчик событию OnMinimize.
Или кинуть на форму невизуальный объект ApplicationEvents, в котором лёгкими движениями мышки назначить обработчик событию OnMinimize.
OnHide срабатывает только, если свойству Visible формы присвоить False, а не при минимизации формы (если конечно память мне не изменяет :))
На счет OnMinimize все зависит от обстоятельств. Если например при определенных обстоятельствах надо запрещать/разрешать минимизацию или при нажатии кнопки минимизации окна вместо минимизации сделать что-то другое, тогда лучше отлавливать событие WM_SYSCOMMAND.
Кроме того, приложение может быть многооконным, а OnMinimize возникает только при минимизации главной формы приложения.