请问各位,如何将一个窗口只显示在指定的窗口上。请帮助。    我现在有一个窗口如"form2",指定放到"form1"上。(说明,form1,和form2是一个程序)
    
    我的操作如下,把窗口form2的FormStyle设为fsStayOnTop。现在form2是在form1上,但问题如现了,form2也在别的程序窗口上。    小弟就只想把form2放到form1上,别的窗口该如何显示就怎么显示。    小弟希望,不设form2的FormStyle设为fsStayOnTop。因为这样做会使form2也会显示在别的窗口上。我只希望form2显示在form1上。
    
    帮助,帮助,帮助,帮助,帮助,帮助,帮助,帮助,帮助,帮助,帮助,帮助。

解决方案 »

  1.   

    不好意思,刚刚才看到你的PMprocedure TForm1.FormCreate(Sender: TObject);
    var
      h: HWND;
    begin
      Shellexecute(handle,'open','Project2.exe',nil,nil,sw_shownormal);
      sleep(1000);
      h:= Windows.FindWindow(nil,'Project2');
      if h<>0 then
        Windows.SetParent(h,Self.Handle);
    end;
      

  2.   

    对了,你关FORM1的时候,记得还要销毁FORM2,即KILL掉进程
      

  3.   

    你好,多谢你的回复。
    说明,form1,和form2是一个程序
    但,我测试了一下,你是把form2放入到form1窗口里面了。
    我希望是,form2显示在form1上面,而不是显示是窗口里面。
    我设 form2的FormStyle设为fsStayOnTop,这样form2是在form1上面,但,它也同时在别的程序上面。我就只想form2在form1窗口上面。不要在别的程序上面。请帮助。谢谢。
      

  4.   

    ShowModal即可,没别的,form1里面弹出form2的时候,让form2模态显示。
      

  5.   

    在form1上方panel.把form2放到panel里即可。
      

  6.   

    估计你的意思就是说在打开form2的时候form1不能点击的问题吧  
    用showmodal
      

  7.   

    将Form1设成MDI窗体,Form2设成它的子窗体,这样Form2就不会跑到外面来了,也不会跑到其它程序的上面,只在Form1的上面...
      

  8.   

    分析:两个窗体(Form1和Form2),假设Form1中有按钮(或其它控件)能够将Form2显示出来并保持Form2在Form1之上,并且Form1上的其它控件能够正常操作,那么你可以在Form1的OnActivate写如下代码:procedure TForm1.FormActivate(Sender: TObject);
    begin
      if Form2.Visible then 
      begin
        Form2.Show;
      end;
    end;这个代码是当点击Form1时,如果没有代码,会将Form1的显示顺序放到最前面来,但如果要求Form2在Form1,那么就意味着Form2处于显示状态的话,Form1不能提到前面来显示,而只能显示Form2。如果Form2没有处于显示状态,Form1正常进行操作。