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

Советы » Мышка и Курсор » Добавление события OnMouseLeave

Все потомки 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

.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com