Examples Delphi

Title: Trap the OnEnter and OnLeave events.
Question: This code shows how to get the OnEnter and OnLeave event from components without changing the component.
Answer:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FFocusControl: TControl;
procedure ApplicationIdle(Sender: TObject; var Done: Boolean);
public
{ Public declarations }
procedure OnEnter(Sender: TObject);
procedure OnExit(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
FFocusControl := nil;
Application.OnIdle := ApplicationIdle;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Application.OnIdle := nil;
end;
procedure TForm1.ApplicationIdle(Sender: TObject; var Done: Boolean);
var
CurControl: TControl;
P: TPoint;
begin
GetCursorPos(P);
CurControl := FindDragTarget(P, True);
if FFocusControl CurControl then
begin
if FFocusControl nil then
OnExit(FFocusControl);
FFocusControl := CurControl;
if FFocusControl nil then
OnEnter(FFocusControl);
end;
end;
procedure TForm1.OnEnter(Sender: TObject);
begin
//OnEnter code
If sender=Button1 then begin
Label1.caption:='Hello';
Button1.Caption:='Exit';
end;
end;
procedure TForm1.OnExit(Sender: TObject);
begin
//OnExit code
If sender=Button1 then begin
Label1.caption:='Godbye';
Button1.Caption:='Enter';
end;
end;
end.