有三个窗体Form1, Form2, Form3, 在Form1里打开Form2, 然后在Form2里打开Form3,但现有有个问题,我想在Form2里以非ShowModal方式打开Form3,用Show 打开Form3后,Form2可响应其它操作,同时Form3还必须在Form2之上,我将Form3 的FormStyle属性设为fsStayOnTop后,但没效果,Form3依然可以被Form2遮挡,但如果不开Form1就正常,不如该如何解决。

解决方案 »

  1.   

    这样试试Form3.Parent := Form2;
    Form2.Parent := Form1;
      

  2.   

    Form3.Parent := Form2;
    ---------------------------
    我试了,OnTop是解决了,但Form3被嵌入Form2里了,Form3无法移出Form2的窗口
      

  3.   

    以最大化的方式Show Form2,并且隐藏掉最大化最小化按钮,然后show form3 。
      

  4.   

    哦,上面那个不行,
    你就在showmodal form2之前,做一下form1.hide;就可以了。当form2关闭时,再显示一下form1就行了。
      

  5.   

    你就在showmodal form2之前,做一下form1.hide;就可以了。
    --------------------------------------------------------
    form1是主界面,隐藏起来不好看,还有没有其它方法
      

  6.   

    把form3做成悬浮窗,然后用show调用就可以了
    unit Unit3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm3 = class(TForm)
      private
        { Private declarations }
      public
        procedure Createparams(Var Params:TCreateParams);override;
      end;var
      Form3: TForm3;implementation{$R *.dfm}procedure TForm3.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;
      WndParent:=GetDesktopWindow; //关键一行,用SetParent都不行!!  end;end; 
    end.