unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, ExtCtrls, StdCtrls, Types;
type
{ TForm1 }
TForm1 = class(TForm)
ApplicationProperties1: TApplicationProperties;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Panel1: TPanel;
Panel2: TPanel;
procedure ApplicationProperties1UserInput(Sender: TObject; Msg: Cardinal);
procedure FormCreate(Sender: TObject);
procedure Panel1MouseLeave(Sender: TObject);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer
);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not(Sender is TWinControl) then Exit;
(Sender as TWinControl).Color := clred;
end;
procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
if not(Sender is TWinControl) then Exit;
(Sender as TWinControl).Color := clblue;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.OnMouseMove := nil;
Panel1.OnMouseLeave := nil;
end;
procedure TForm1.ApplicationProperties1UserInput(Sender: TObject; Msg: Cardinal
);
const
AlreadyLeave: Boolean = True;
var
MousePos: TPoint;
TestObject: TPanel;
begin
TestObject := Panel1;
MousePos := ScreenToClient(Mouse.CursorPos);
if PtInRect(TestObject.BoundsRect, MousePos) then
begin
Panel1MouseMove(TestObject, [], MousePos.X - Panel1.Left, MousePos.Y - Panel1.Top);
AlreadyLeave := False;
end
else
if not(AlreadyLeave) then
begin
Panel1MouseLeave(TestObject);
AlreadyLeave := True;
end;
end;
end.