How to know if the mouse has entered the component area
If you ever created visual components you probably wanted to know if the mouse is over the component. Well, this is a lot easier than you could imagine using Delphi Help :-) There are two Delphi component messages you need to use: CM_MOUSEENTER and CM_MOUSELEAVE.
type TMouseButton = class(TButton) protected ... fMouseOut, fMouseOver: TNotifyEvent; ... procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; published ... property OnMouseOut: TNotifyEvent read fMouseOut write fMouseOut; property OnMouseOver: TNotifyEvent read fMouseOver write fMouseOver; end; ... // Trigger OnMouseEnter event if any assigned procedure TMouseButton.CMMouseEnter(var Message: TMessage); begin if Assigned(fMouseOver) then OnMouseOver(Self); Message.Result := 1; // Mark message as taken care of end; ... // Trigger OnMouseLeave event if any assigned procedure TMouseButton.CMMouseLeave(var Message: TMessage); begin if Assigned(fMouseOut) then OnMouseOut(Self); Message.Result := 1; // Mark message as taken care of end;
Author: | Unknown |
---|---|
Added: | 2007-06-02 |
Last updated: | 2007-06-02 |