Как переопределить кнопку Восстановить формы

Тема в разделе "Delphi", создана пользователем WinHack, 23 ноя 2016.

  1. WinHack
    При обработке сообщения WM_SYSCOMMAND Windows можно перехватывать операцию восстанвления окна. Когда форма максимально развернута, кнопка меняет свой вид и назначение. Нажатие кнопки Восстановить возвращает форме первоначальное положение и размер.

    Переопределив операцию восстановления, можно, например, создать форму, которую можно будет только развернуть и свернуть.

    Чтобы уловить и отреагировать на операцию восстанвления формы, нужно обработать сообщение WM_SYSCOMMAND Windows.

    Сначала создадим обработчик сообщения в разделе private формы:

    Код:
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
        procedure WMSysCommand(
                var Msg: TWMSysCommand); message WM_SYSCOMMAND;
      public
        { Public declarations }
      end;
    Теперь напишем перехватчик сообщения:

    Код:
    procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
    begin
      if Msg.CmdType = SC_RESTORE then
      begin
        if Self.WindowState = wsMaximized then
        begin
          Self.WindowState:= wsMinimized;
          Msg.Result:= 0;
          Exit;
        end;
        if Self.WindowState = wsMinimized then
        begin
          Self.WindowState:= wsMaximized;
          Msg.Result:= 0;
          Exit;
        end;
      end;
      DefaultHandler(Msg);
    end;
    Установите свойство WindowsState в состояние wsMinimized или wsMaximized.

    Примечание: не путайте восстановление приложения OnRestore с восстановлением формы или окна. Событие OnRestore объекта TApplication срабатывает, когда приложение восстанавливается из Панели задач.