两种方法:
1.Delphi自带的:
  将Form 的 FromStyle 设置为 fsStayOnTop
  即可;但是这个方法,不是很好,如果动态设置的话,整个窗口会一闪,
  因为Delphi需要对它的进行重建。
2.Windows Api:
  设置最前: 
    SetWindowPos( Form1.Handle, HWND_TOPMOST, Form1.left, Form1.top,    Form1.width, Form1.height, SWP_SHOWWINDOW);
   取消:
          SetWindowPos(Form1.handle, HWND_NOTOPMOST, Form1.left, Form1.top, Form1.width, Form1.height, SWP_SHOWWINDOW);  

解决方案 »

  1.   

    补充一点:如果不想设置的时候显示窗口,则参数 SWP_SHOWWINDOW 可以改为
      SWP_NOMOVE
      

  2.   

    讨论过的,看以前的贴子:
    如何产生不会按Win+M键而消失的小窗口,类似FLASHGET的悬浮窗,我重载了
     procedure TLittlebox.CreateParams(var Params: TCreateParams);
    begin
    inherited CreateParams( Params);
    Params.WndParent:=0;
    end;
    设这个Form的边为NONE,
    结果在任务栏中出现这个窗口的标题,如何才能达到象FLASHGET一样的窗口呢?
    我已经知道答案了,从CSDN得知
    procedure TLittlebox.CreateParams(var Params: TCreateParams);
    begin
    inherited CreateParams( Params);
      Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;
      Params.WndParent := 0; // 这是必须的,否则当App变为后台时会将该窗体设置为不TopMost
    end;
      

  3.   

    对!
    一要设置属性为stayontop
    而要设置父属性为desktop(桌面)
    才能实现始终居于最上层
    楼上的代码是对的:
    procedure TLittlebox.CreateParams(var Params: TCreateParams);
    begin
    inherited CreateParams( Params);
      Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;//最上层
      Params.WndParent := 0; // 设父属性,0是桌面
    end;