鼠标悬在Form上吗?

emu*_*rad -2 delphi pascal

在Delphi XE上,此代码对我不起作用:

http://delphi.about.com/cs/adptips2000/a/bltip0800_5.htm

procedure TForm1.FormDeactivate(Sender: TObject) ;
begin
   ReleaseCapture;
end;

procedure TForm1.FormMouseMove
(Sender: TObject; Shift: TShiftState; X,Y: Integer) ;
begin
  If GetCapture = 0 then
    SetCapture(Form1.Handle) ;
    if PtInRect(Rect(Form1.Left,
                    Form1.Top,
                    Form1.Left + Form1.Width,
                    Form1.Top + Form1.Height),
                    ClientToScreen(Point(x, y))) then
     Form1.Caption := 'Mouse is over form' else
     Form1.Caption := 'Mouse is outside of form';
end;
Run Code Online (Sandbox Code Playgroud)

没有错误 - 它只是没有效果.

请帮忙.

编辑1

事实证明问题不在于代码,即使鼠​​标FormMouseEnter和FormMouseLeave也不起作用,因为我将表单传递给我用这样的函数创建的单元:

程序Slide(Form:TForm; Show:Boolean);

我正在从这个过程中调用Show方法.我怎样才能克服这个问题?

谢谢.

编辑2

我不想使用我现在发布的功能.我想使用下面人们建议的内容(FormMouseEnter和FormMouseLeave),但它在我的情况下也不起作用.

jpf*_*ius 5

您可以使用OnMouseEnterOnMouseLeave事件来跟踪鼠标是否在表单上,​​而不捕获鼠标光标.