Карта сайтаСсылкиКонтакты

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

PDF Печать
Статьи

Здесь мы рассмотрим, как свернуть форму двойным щелчком мыши на заголовке подобно рулону, оставив заголовок на экране. Для этого мы будем перехватывать сообщение 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 - На кнопке "Развернуть/Восстановить"

 

Добавить комментарий


Защитный код
Обновить