DELPHI FAQ: Как перехватить события в неклиентской области формы?
Как перехватить события в неклиентской области формы?
Previous
Home
Next
Создайте обработчик одного из сообщений 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)
специально для
Королевства Дельфи
DELPHI FAQ