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. For a complete list of Delphi component messages check out tip 4.33.
...
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;
...
Tags: complete list, delphi component, delphi help, taken care, visual components
Merlin’s Delphi Forge
Leave a comment