You can tell Windows to send a message, namely a message WM_MOUSELEAVEwhen the mouse leaves the control. To do this, call the function TrackMouseEvent. TrackMouseEventSpecify a flag in the structure TME_LEAVE.
On request code:
, Windows, , :
procedure TMyControl.SetMouseEvent;
var
tme: TTrackMouseEvent;
begin
tme.cbSize := sizeof(tme);
tme.dwFlags := TME_LEAVE;
tme.hwndTrack := Self.Handle;
TrackMouseEvent(tme);
end;
, , . mesage WM_MOUSELEAVE. WndProc ( ) WM_MOUSELEAVE.
procedure TMyControl.WndProc(var Message: TMessage);
begin
inherited;
case Message.Msg of
WM_MOUSELEAVE:
beep;
end;
end;
, Windows , , , . SetMouseEvent WndProc, , TrackMouseEvent. , SetMouseEvent OnMouseMove :
procedure TMyControl.WndProc(var Message: TMessage);
begin
inherited;
case Message.Msg of
WM_MOUSELEAVE:
beep;
WM_MOUSEMOVE:
SetMouseEvent;
end;
end;
, Delphi, Delphi 2009, ( , OnMouseLeave), , .