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