Внешний вид сайта:

Как свернуть форму на экране

Здесь мы рассмотрим, как свернуть форму двойным щелчком мыши на заголовке подобно рулону, оставив заголовок на экране. Для этого мы будем перехватывать сообщение WM_NCLBUTTONDBLCLK. Форма сворачивается, но не убирается в панель задач.

Свернутое окно приложения

Вот полный код, демонстрирующий этот трюк:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    OldHeight: integer;
    procedure ZipUpForm;
  public
    { Public declarations }
    procedure WndProc(var Msg: TMessage); override;
  end;

var
  Form1: TForm1;
const
  iZipHeight: integer = 38; // не менее 38 для Windows XP

implementation

{$R *.dfm}

{ Перехват сообщения WM_NCLBUTTONDBLCLK }
procedure TForm1.WndProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_NCLBUTTONDBLCLK then
  begin
    if Msg.WParam = htCaption then
      ZipUpForm;
    end
    else
      inherited WndProc(Msg);
end;

{ Процедура сворачивания и разворачивания формы }
procedure TForm1.ZipUpForm;
begin
  if Height = iZipHeight then
    Height:= OldHeight
  else
  begin
    OldHeight:= Height;
    Height:= iZipHeight;
  end;
end;

end.

Вы можете перехватывать щелчки мыши и в другой части формы. Вот значения wParam, которые могут быть использованы:

  • HTBORDER - На границе окна, которое не имеет границы изменения размеров
  • HTBOTTOM - На нижней горизонтальной границе окна
  • HTBOTTOMLEFT - В левом нижнем углу границы окна
  • HTBOTTOMRIGHT - В правом нижнем углу окна
  • HTCAPTION - В заголовке окна
  • HTCLIENT - В клиентской части окна
  • HTERROR - На фоне экрана или на границе между окнами (то же самое, что и HTNOWHERE, за исключением того, что звуковой сигнал будет воспроизведен при проверке нажатия HTERROR
  • HTGROWBOX - В части изменения размера (то же самое, что и HTSIZE
  • HTHSCROLL - На горизонтальной полосе прокрутки
  • HTLEFT - На левой границе окна
  • HTMENU - В меню
  • HTNOWHERE - На фоне экрана или границе между окнами
  • HTREDUCE - На кнопке "Свернуть"
  • HTRIGHT - На правой границе окна
  • HTSIZE - В области изменения размера (то же самое, что и HTGROWBOX
  • HTSYSMENU - В системном меню или кнопке "Закрыть" дочернего окна
  • HTTOP - На верхней горизонтальной границе окна
  • HTTOPLEFT - В верхнем левом углу границы окна
  • HTTOPRIGHT - В правом верхнем углу границы окна
  • HTTRANSPARENT - В окне, в настоящее время закрытом другим окном
  • HTVSCROLL - На вертикальной полосе прокрутки
  • HTZOOM - На кнопке "Развернуть/Восстановить"

Комментарии

Нет комментариев. Ваш будет первым!