Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi

Дата: 02.06.00


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


Создайте обработчик одного из сообщений 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.



Источник: Дельфи. Вокруг да около.


Чтобы вернуться оцените этот вопрос/ответ:
   

Прислать свои комментарии


Новое на сайте

Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо