Покидание мыши области компонента

Кто-нибудь знает как мне определить момент покидания мыши области компонента?

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);
begin
if (X = 0) or (X = Panel1.Width) or (Y = 0) or (Y = Panel1.Width) then
Screen.Cursor := crHSplit
else
Screen.Cursor := crDefaend;

Техника, которую я применяю, подразумевает использование события OnMouseMove ВСЕМИ моими компонентами, (включая панель, на которой они расположены). В момент покидания мыши области кнопки возникает событие Panel.OnMouseMove у панели, на которой она расположена. Это может показаться непрактичным, но для решения моей задачи вполне подходит. BTW, было бы неплохо соорудить компонент, который имел бы опубликованными все события, начинающиемя с префикса CM_xxx, в этом случае ни одна из манипуляций мыши в области компонента не осталась бы незамеченной. Для справки привожу порядок возникновения всех возможных событий мыши: попадание мыши в область клиента OnEnter, MouseMove - перемещение мыши, следом идет щелчок OnClick, затем двойной щелчок и, наконец, уход мыши с области клиента (OnExit).