源程序如下:
unit zp;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, StdCtrls, DB, ADODB, Grids, DBGridEh;type
  Tfmzp = class(TForm)
    PMzp: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N31: TMenuItem;
    N41: TMenuItem;
    GPzp: TGroupBox;
    edhth: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure N41Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure edhthMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure edhthMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure edhthMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    procedure CreateParams(var Params: TCreateParams); override;
    { Public declarations }
  end;var
  fmzp: Tfmzp;
  fdown:boolean;
  FOldX, FOldy:integer;  implementationuses Unit1, zp_list;{$R *.dfm}procedure Tfmzp.Createparams(var params: TCreateParams);
begin
  inherited CreateParams(Params);
  with params do
  begin
    params.Style:=WS_POPUP {or WS_BORDER};
    Params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
    params.WndParent:=getDeskTopWindow;
  end;
end;procedure Tfmzp.FormCreate(Sender: TObject);
begin
  ShowWindow( Application.Handle, SW_HIDE );
  SetWindowLong( Application.Handle, GWL_EXSTYLE,
                GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Application.Handle, SW_SHOW );
  with fmzp do
    begin
      Width:=gpzp.Width;
      height:=gpzp.height;
    end;
end;
procedure Tfmzp.N41Click(Sender: TObject);
begin
application.Terminate;
end;procedure Tfmzp.N1Click(Sender: TObject);
begin
if sender is TMenuItem then
   MessageBox(handle, pchar('你点的是'+(sender as TMenuItem).Name+'!'), '', MB_ICONINFORMATION or MB_OK);
end;procedure Tfmzp.edhthMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbleft) then fdown:=true;
  FOldX := X;
  FOldy := Y;
end;procedure Tfmzp.edhthMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if FDown then
     begin
       fmzp.Left := fmzp.Left + X - FOldX;
       fmzp.Top := fmzp.Top + Y - FOldY;
     end;
end;procedure Tfmzp.edhthMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbleft) then fdown:=false;
end;
end.在这个悬浮窗口中包含了一个groupbox,其中有一个EDIT组件,每次运行时可以在其中输入数据,可当把焦点移出本程序后再回来,虽然光标在EDIT中闪,但输入不了。比如说我打开一个记事本程序,再运行我的程序,第一次可以在我的程序中输入,但当我把焦点移到记事本上,再单击我的程序,这时虽然在EDIT中出现了光标,可输入的东西还是在记事本程序上,这是为什么?