» Help

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

« Return to contents »