Поймать минимизировать событие для формы (Delphi)
Я нашел 2 способа отловить событие onMinimize.
Первое: в событии FormResize:
if MyForm.WindowState = wsMinimized then ......
Второе: объявление обработчика сообщений следующим образом:
procedure WMSize(var Msg: TMessage); message WM_SIZE;
А потом:
procedure TForm57.WMSize(var Msg: TMessage);
begin
if Msg.WParam = SIZE_MINIMIZED then ....
end;
Какой путь лучше?!
2 ответа
Решение
OnResize
срабатывает в ответ на то же сообщение (WM_SIZE
). Если вам не нужно реагировать до того, как VCL обработает сообщение (обновить полосы прокрутки, выровнять элементы управления и т. Д.), Вам не нужно прикреплять обработчик сообщений. В противном случае, обязательно обращайтесь с ним до inherited
вызов (который отсутствует в вашем образце).
Второе лучше. поскольку WindowState не обязательно является wsMinimized.