Delphi - база знаний


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


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





Создайте обработчик одного из сообщений WM_NC (non client - не клиентских) (посмотрите
WM_NC в Windows API help). Пример показывает как перехватить вижение мыши во всей
неклиенстской области окна (рамка и заголовок).

Пример:

unitUnit1;

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)
специально для




Начало  Назад  Вперед



Книжный магазин