将form的formstyle属性设为fsStayOnTop

解决方案 »

  1.   

    将form的formstyle属性设为fsStayOnTop 
    当其它程序激活后仍然有效,你试试把
      

  2.   

    Public
      procedure Createparams(Var Params:TCreateParams);override;
    ...procedure TFormDrop.Createparams(var Params:TCreateParams);
    begin
      Inherited CreateParams(Params);
      With Params do
      begin
       EXStyle:=ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES or WS_DLGFRAME
       wndParnet:=GetDesktopWindow;  //关键一行,用SetParent都不行!!
      end;
    end;
      

  3.   

    应该有用,但要是其他应用程序也使用了fsStayOnTop,那当然是后激活form的在最上层。
      

  4.   

    呵呵,上面的wndParnet:=GetDesktopWindow里的wndParnet是wndParent,刚才写错了~~
      

  5.   

    我早就用了fsStayOnTop
    就是不行,而且刚又做了个DEMO
      

  6.   

    完整的说,应该是:
    /////////////////////////
    方法一:
    先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;
      

  7.   

    Bob7946(X度空间) 的方法可行
    多谢各位等下给分
         
      

  8.   

    不行啊,如果另一个也是always on top的程序是当前窗口的话,同样会挡在这个程序前面
    如果只是要这样的效果的话,直接设fsStayOnTop 就可以了