Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как перехватить события в неклиентской области формы?

01.01.2007

Создайте обработчик одного из сообщений WM_NC (non client - не клиентских) (посмотрите

WM_NC в Windows API help). Пример показывает как перехватить вижение мыши во всей

неклиенстской области окна (рамка и заголовок).

Пример:

unit Unit1;
 
interface
 
uses
   
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
 
type
TForm1
= class(TForm)
private
       
{Private declarations}
        procedure WMNCMOUSEMOVE
(var Message: TMessage);
        message WM_NCMOUSEMOVE
;
public
       
{Public declarations}
end;
 
var
        Form1
: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1
.WMNCMOUSEMOVE(var Message: TMessage);
var
        s
: string;
begin
       
case Message.wParam of
                HTERROR
:        
                        s
:= 'HTERROR';
                HTTRANSPARENT
:
                        s
:= 'HTTRANSPARENT';
                HTNOWHERE
:        
                        s
:= 'HTNOWHERE';
                HTCLIENT
:
                        s
:= 'HTCLIENT';
                HTCAPTION
:
                        s
:= 'HTCAPTION';
                HTSYSMENU
:
                        s
:= 'HTSYSMENU';
                HTSIZE
:
                        s
:= 'HTSIZE';
                HTMENU
:
                        s
:= 'HTMENU';
                HTHSCROLL
:
                        s
:= 'HTHSCROLL';
                HTVSCROLL
:
                        s
:= 'HTVSCROLL';
                HTMINBUTTON
:
                        s
:= 'HTMINBUTTON';
                HTMAXBUTTON
:
                        s
:= 'HTMAXBUTTON';
                HTLEFT
:
                        s
:= 'HTLEFT';
                HTRIGHT
:
                        s
:= 'HTRIGHT';
                HTTOP
:
                        s
:= 'HTTOP';
                HTTOPLEFT
:
                        s
:= 'HTTOPLEFT';
                HTTOPRIGHT
:
                        s
:= 'HTTOPRIGHT';
                HTBOTTOM
:
                        s
:= 'HTBOTTOM';
                HTBOTTOMLEFT
:
                        s
:= 'HTBOTTOMLEFT';
                HTBOTTOMRIGHT
:
                        s
:= 'HTBOTTOMRIGHT';
                HTBORDER
:
                        s
:= 'HTBORDER';
                HTOBJECT
:
                        s
:= 'HTOBJECT';
                HTCLOSE
:
                        s
:= 'HTCLOSE';
                HTHELP
:
                        s
:= 'HTHELP';
               
else s:= '';
       
end;
        Form1
.Caption := s;
       
Message.Result := 0;
end;
 
end.

Взято из

DELPHI VCL FAQ Перевод с английского      

Подборку, перевод и адаптацию материала подготовил Aziz(JINX)

специально для Королевства Дельфи