有两个窗体,form1,form2
应用程序启动时进入主窗体form1,form2 为从属窗体:
procedure TForm1.Button1Click(Sender: TObject);
begin
  form2.show ;
end;当主窗体form1最小化时所有窗体(即form2),也不见了,如何才能让form1最小化不影响form2?或者说form2继续在显示在屏幕上?

解决方案 »

  1.   

    简单啦, 只要改变其他窗体的父窗口就行了.
    如下:
       (其他窗体).Parent:= GetDesktopWindow();
    或 (其他窗体).Parent:= NULL;
      

  2.   

    (其他窗体).Parent:= GetDesktopWindow();
    =========================================
    报错:
    Incompatible "TWinControl" and "HWND"于是我改为:self.Parent.Handle:=GetDesktopWindow();
    结果:Can't assign a readonly property
      

  3.   

    对不起,打漏了,应该为
    (其他窗体).ParentWindow:= GetDesktopWindow();
      

  4.   

    GWFXP(影)用你的方法的确可行,但又有另一个问题:我用了
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      self.ParentWindow:=GetDesktopWindow();
    end;之后我发现Form2窗体上菜单不见了!显示不出来了。
      

  5.   

    其他窗体不要用字窗体的模式,即可
    ================================我的窗体本来就不是MDI窗体啊?
      

  6.   

    private
        procedure CreateParams(var Params: TCreateParams);override;procedure TForm2.CreateParams(var Params: TCreateParams);    //避免主form最小化时form2跟着最小化
    begin
      inherited CreateParams(Params);
       Params.Style := (Params.Style or ws_Popup) and not ws_Caption;
       Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
       Params.WndParent := GetDeskTopWindow;
    end;
      

  7.   

    不明白为什么要让主窗体最小化而其他不便,正常来说你用 ShowModal 就不回让主窗体影响你需要的窗体。
    如果非要那么做的话 可以拦截主窗体的 最小话消息
    先让他最小化,然后所有子窗体 SHOW;
      

  8.   

    procedure Tform1.mytest(var msg:Tmessage);
    begin
      if msg.WParam=SC_MINIMIZE then
       begin
         form1.WindowState:=wsMinimized;
         form2.Show;
       end else
       inherited;
    end;
      

  9.   

    让Form2显示在任务栏上就行了
    procedure CreateParams(var Params: TCreateParams); override;procedure Form2.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.WndParent := 0;
    end;
      

  10.   

    不明白为什么要让主窗体最小化而其他不便,正常来说你用 ShowModal 就不回让主窗体影响你需要的窗体。
    =============================其实就如同“金山词霸”中的“生词本”,
    “金山词霸”最小化缩到托盘中时,
    “生词本”仍然在屏幕上不受影响。
      

  11.   

    l0f(凌风) 说的应该可以!拦截主窗体WM_SYSCOMMAND消息,发现参数是SC_MINIMIZE 就做处理