Все потомки 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; |
Дополнение
Часто приходится сталкиваться с ситуацией, когда необходимо обработать два важных события для визуальных компонентов:
(*///////////////////////////////////////////////////////*) (*// 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. |
Best regards,
Briculski, bserge@airport.md
[000181]