我做的一个应用系统中,有一个窗口,它始终是最大化的,用它来作为背景,在这个窗口上有一系列操作的小窗口,怎么样让小窗口保持在背景窗口的上面,从一个小窗口转换到另一个小窗口?
  我开始用的boderstyle 为bsdialog,用showmodal方法一个倒是可以,但再跳回来就不行,不知怎么回事?

解决方案 »

  1.   

    使用show不用showmodal倒是可以互相切换。不知道可不可以达到你的目的。
      

  2.   

    用mdi窗口可轻松实现,无须代码。具体实现几乎每本Delphi入门书上都讲过了。
      

  3.   

    用mdi窗口的时候隐藏一个子窗口怎么办?
      

  4.   

    做MDI,设置主窗口formstyle为fsmdiform
           设置子窗口formstyle为fschildform
      

  5.   

    关闭时候:action:=cafree;
    最小化时候:close;
      

  6.   

    将小窗口的parent赋为背景窗口即可操作。或者将小窗口设为stayontop,不用showmodal。
      

  7.   

    '将小窗口的parent赋为背景窗口即可操作。或者将小窗口设为stayontop,不用showmodal'这个方法我认为是最为简洁实用。
      

  8.   

    //让所有子窗体从这个窗体继承
      TChildForm = class(TForm)
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      protected
        procedure CreateParams(var Params:TCreateParams); override;
      end;procedure TChildForm.CreateParams(var Params:TCreateParams);
    //让拥有者成为父
    begin
      inherited CreateParams(Params);
      if Owner is TForm then
        Params.WndParent:=TForm(Owner).Handle;
    end;procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
    //关闭释放
    begin
      Action:=caFree;
    end;//在父窗体中建立窗体用
    frmChild:=TChildForm.Create(self);
    frmChild.Show;
    //这样只要self是从TForm继承,ChildForm就会永远在其上面,非模式用MDI窗体也是个解决办法,但不能HIDE,必须用API函数
    ShowWindow(frmChild.Handle,SW_HIDE);  //隐藏
    ShowWindow(frmChild.Handle,SW_SHOW);  //显示
      

  9.   

    用MDI吧,最简便。
    只不过要关闭子窗体时,别忘了在子窗体的formclose事件里写上
    action:=caFree;
    才会真正关闭子窗体,否则点击关闭(X)只会最小化