谢谢你的答复,不过我不能用showmodal,
因为我希望这个窗口是非模式窗口,它显示出来后就把原先的主窗口hide掉,
麻烦你再想想办法。

解决方案 »

  1.   

    你不会在showmodal前把主窗体Hide掉?
      

  2.   

    我用SETWINDOWPOS可以实现该窗口在本程序中的窗口最前面,不知是否符合你的要求?
    form2:=Tform2.Create(self);
    setwindowpos(form2.Handle,HWND_TOPmost,10,10,200,300,SWP_SHOWWINDOW );
    form2.show;//没有此句,form2无法关闭
      

  3.   

    先setforegroundwindow(HWND);然后再setwindowpos(form2.Handle,HWND_TOPmost,10,10,200,300,SWP_SHOWWINDOW );
      

  4.   

    把 FormStyle 设为 StayOnTop 不行吗?
      

  5.   

    关键技术是重载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;给分吧.
      

  6.   

    你好,特强壮!
       这个问题比较简单!我都有点.....
    Form1为主窗口,Form2就是你要的浮动窗口,把它的FormStyle改为fsStayOnTop;
    再在 Form1的某个事件中 Form2.Show 即可。
       以后遇到问题是要先从简单、基本的地方考虑,其实DELPHI已经提供给大家很多属性选择,是否觉得没有必要全部掌握每个控件的属性、方法等,那就错了!DELPHI尽管有些不完善的地方,但它仍不失为一种优秀的语言!共同努力!OK!