procedure CreateParams(var Params: TCreateParams); override;
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.EXStyle or WS_EX_TOPMOST;
  Params.WndParent := GetDesktopWindow;
end;

解决方案 »

  1.   

    转贴:
    我用了SetWindowPos函数,窗体是启动的主窗体时,就可以。
    但是如果窗体是在另一个窗体中通过form.show方法显示出来时,怎么也不行了。
    原因是什么呢?
    /////////////////////////
    方法一:
    先setforegroundwindow(HWND);然后再setwindowpos(form2.Handle,HWND_TOPmost,10,10,200,300,SWP_SHOWWINDOW );
    ////////////////////////方法二:
    关键技术是重载Form的CreateParams方法
    {form2 code}
    public
      procedure CreateParams(Var Params:TCreateParams);override;uses unit1;
    procedure tform2.CreateParams(var Params:TCreateParams);
    begin
      inherited;
      With Params do
      begin
        wndParent:=GetDesktopwindow;
        ExStyle:=ExStyle or WS_EX_TOPMOST;
      end;
    end;procedure TForm2.FormClose(Sender :TObject;var Action:TCloseAction);
    begin
      Form1.show;
      ShowWindow(Application.handle,sw_show);
    end;
    {Form1}
    uses unit2;
    procedure TForm1.Button1Click(Sender:TObject);
    begin
      with tform2.create(self) do show;
      hide;  {Hide Form1}
      ShowWindow(Application.handle,sw_hide);  {Hide Application}
    end;
      

  2.   

    由主窗体调用的子窗体(不是指MDI)缺省就是在最上哪,不关了子窗体,根本就点不到主窗体