Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Отслеживать переход мышки на компонент и уход ее

01.01.2007
 { 
 The following unit is a visual component inherited of TImage, which has the 
 2 additional events OnMouseEnter and OnMouseLeave. 
}
 
 unit ImageEx;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
   Dialogs, ExtCtrls;
 
 type
   TImageEx = class (TImage)
   private
     { Private declarations }
     FOnMouseLeave: TNotifyEvent;
     FOnMouseEnter: TNotifyEvent;
     procedure CMMouseEnter(var msg: TMessage);
       message CM_MOUSEENTER;
     procedure CMMouseLeave(var msg: TMessage);
       message CM_MOUSELEAVE;
   protected
     { Protected declarations }
     procedure DoMouseEnter; dynamic;
     procedure DoMouseLeave; dynamic;
   public
     { Public declarations }
   published
     { Published declarations }
     property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
     property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
   end;
 
 procedure Register;
 
 implementation
 
 procedure Register;
 begin
   RegisterComponents('Additional', [TImageEx]);
 end;
 
 { TImageEx }
 
 procedure TImageEx.CMMouseEnter(var msg: TMessage);
 begin
   DoMouseEnter;
 end;
 
 procedure TImageEx.CMMouseLeave(var msg: TMessage);
 begin
   DoMouseLeave;
 end;
 
 procedure TImageEx.DoMouseEnter;
 begin
   if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
 end;
 
 procedure TImageEx.DoMouseLeave;
 begin
   if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
 end;
 
 end.

Взято с сайта: https://www.swissdelphicenter.ch


Получить активный элемент управления под курсором мышки

 { You may call this function in a global event procedure, 
  linking as many components events to it as you need. }
 
 function FindControlAtPos: TWinControl;
 var
   Pt: TPoint;
 begin
   GetCursorPos(Pt);
   Result := FindControl(WindowFromPoint(Pt));
 end;
 
 
 { (Beispiel) Hier die allgemein gultige Procedure fur OnMouseUp. 
  Die Behandlung von OnClick bleibt dabei erhalten: 
  die Funktionalitat aus OnMouseUp kommt dazu. }
 
 { (example) There's the global proc for the OnMouseUp event. 
  Note: OnClick keeps working, so you can "add" the OnMouseUp 
  facility to no cost. }
 
 procedure TForm1.GenericMouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
 var
   TWC: TWinControl;
 begin
   TWC := FindControlAtPos;
   //what for a class ! 
  Showmessage('Here we are: ' + TWC.ClassName);
   //Let it blink... 
  TWC.Visible := False;
   Sleep(150);
   TWC.Visible := True;
 end;

Взято с сайта: https://www.swissdelphicenter.ch