用Delphi做一个程序,程序很简单,仅含两个窗体,Form1和Form2,运行时让两个Form都显示。现在的问题是,如果这两个Form被其他程序的窗口遮住了一部分(比如记事本),我点击Form1的时候,Form1就排到记事本前面来了,与此同时,Form2也同样到排到记事本前面来了。现在桌面上变成了Form1,Form2挡在记事本的前面那么,如何才能在点击Form1的时候,Form2不变,还是排在记事本的后面呢。本来以为这个问题挺简单的,不成想搞了半天也没搞出来。请大家不吝赐教!

解决方案 »

  1.   

    form1出来的时候
    把form2最小化,不知道可以吗?
      

  2.   

    SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE);
    位于最顶端
    SetWindowPos(Form2.Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE);
    位于最底端
    不知道行不行.
      

  3.   

    不好弄,不好弄,在vfp里面好象可以设置窗体的某些显示特性,现在不可以了 !
      

  4.   

    To: yangsdfz(BLACK DRAGON)这样不行,还是希望不经过用户选择性操作的话,不去最小化任何一个窗体
      

  5.   

    To: zzlingaaa(小舟) 这个方法的确是一个很好的思路,不过这样的话,如果Form2原来不在最底层的话,也会给变到最底层去了。对用户来说,还是会造成困惑。谢谢你的方案!
      

  6.   

    很容易啊:procedure TForm1.FormCreate(Sender: TObject); //Form1的OnCreate事件
    begin
      Application.OnActivate:=AppActivate;
    end;
    procedure TForm1.AppActivate(Sender: TObject);
    begin
      form2.show;
      form1.Show;
    end;
      

  7.   

    To CareYouOnly(只在乎你)非常感谢,不过试了试,还是不行啊,点击Form1的时候,Form2也跳到记事本前面来了怎样才能使得点击Form1的时候,Form2的位置状态不变,点击Form2的时候,Form1的位置状态也不变呢?
      

  8.   

    那就用show方法吧:  form1.show;
     // 对form2不进行任何操作
      

  9.   

    To  taoawhitesheep(涛涛)show是肯定不行的,Form1.show的结果就是Form1,Form2全出来了,
      

  10.   

    将两个form分开,其中一个生成exe,另个用shellexecute调用它,这就把他们分开了。
      

  11.   

    whbo(王红波)说得对!同一个process的窗口,当然会显示在一起了