unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, System.ComponentModel, Borland.Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private

  public
    { Public declarations }
  end;

  TMyPanel = class(TPanel)

  private
    { Private declarations }
    FOnUserEvent: TNotifyEvent;  //¼
    procedure MouseOverPanel(var Msg:TMessage); message WM_MOUSEMOVE;//CM_MOUSELEAVE;
    procedure DoUserEvent(Sender: TObject);//¼OnUserEventĴDoUserEvent

  public
    { Public declarations }
    property OnUserEvent: TNotifyEvent read FOnUserEvent write FOnUserEvent; //¼OnUserEvent
    //property OnUserEvent: TNotifyEvent read FOnUserEvent; //¼OnUserEvent
  end;

var
  Form1: TForm1;
  MyPanel : TMyPanel;

implementation

{$R *.nfm}
procedure TMyPanel.DoUserEvent(Sender: TObject);  //¼OnUserEventĴDoUserEvent
begin
  showmessage('ڴ........');
end;

procedure TMyPanel.MouseOverPanel(var Msg:TMessage);  //¼OnUserEvent
begin
  //showmessage('ssss');
  MyPanel.OnUserEvent := DoUserEvent;  //ʹ¼ OnUserEvent봦
  FOnUserEvent(self);                  // ¼ OnUserEvent䴦DoUserEvent

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyPanel := TMyPanel.Create(self);
  MyPanel.Parent := self;
  MyPanel.Width := 2*self.ClientWidth div 3;
  MyPanel.Height := 2*self.ClientHeight div 3;;
  MyPanel.Color := RGB(0,255,255);
  MyPanel.Left := self.ClientWidth div 6;
  MyPanel.top := self.ClientHeight div 7;
end;

end.