Поймать минимизировать событие для формы (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.

Другие вопросы по тегам