Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Добавление события OnMouseLeave

Автор: Briculski

По ее голому животу бежала мышь. Ниже, ниже... но на самом интересном месте коврик кончился.

Все потомки TComponent могут посылать сообщения CM_MOUSEENTER и CM_MOUSELEAVE во время вхождения и покидания курсора мыши области компонента. Если вам необходимо, чтобы ваши компоненты обладали реакцией на эти события, необходио написать для них соответствующие обработчики.


 procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;
 procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
 ..
 ..
 ..
 procedure MyComponent.CMMouseEnter(var msg:TMessage);
 begin
 
 inherited;
 {действия на вход мыши в область компонента}
 end;
 
 procedure MyComponent.CMMouseLeave(var msg: TMessage);
 begin
 
 inherited;
 {действия на покидание мыши области компонента}
 end;
 

Дополнение

Часто приходится сталкиваться с ситуацией, когда необходимо обработать два важных события для визуальных компонентов:

  1. MouseEnter - когда событие мыши входит в пределы визуального компонента;
  2. MouseLeave - когда событие мыши оставляет его пределы.
Известно, что все Delphi объявляет эти сообщения в виде:
  1. Cm_MouseEnter;
  2. Cm_MouseLeave.

Т.е. все визуальные компоненты, которые порождены от TControl, могут отлавливать эти события. Следующий пример показывает как создать наследника от TLabel и добавить два необходимых события OnMouseLeave и OnMouseEnter.


 (*///////////////////////////////////////////////////////*)
 (*// Author: Briculski Serge
 (*// E-Mail: bserge@airport.md
 (*// Date: 26 Apr 2000
 (*///////////////////////////////////////////////////////*)
 
 unit BS_Label;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;
 
 type
   TBS_Label = class(TLabel)
   private
     { Private declarations }
     FOnMouseLeave: TNotifyEvent;
     FOnMouseEnter: TNotifyEvent;
     procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
     procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
   protected
     { Protected declarations }
   public
     { Public declarations }
   published
     { Published declarations }
     property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
     property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
   end;
 
 procedure Register;
 
 implementation
 
 procedure Register;
 begin
   RegisterComponents('Custom', [TBS_Label]);
 end;
 
 { TBS_Label }
 
 procedure TBS_Label.CMMouseEnter(var Message: TMessage);
 begin
   if Assigned(FOnMouseEnter) then
     FOnMouseEnter(Self);
 end;
 
 procedure TBS_Label.CMMouseLeave(var Message: TMessage);
 begin
   if Assigned(FOnMouseLeave) then
     FOnMouseLeave(Self);
 end;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS