我需要新打开的mdi子窗口在当前窗口的下面,不要覆盖当前窗口,但查完csdn所有关于mdi的帖子都没找到解决方法。即:通过点击当前窗口来新建的子窗口,怎样才能把这个新建的置于当前窗口的下面,保持原子窗口是激活的。请指教

解决方案 »

  1.   

    记录当前的form,建立完了新的,在把原来的变成top不行吗?
      

  2.   

    procedure TMDIMainForm.CreateMDIChildForm;
    var
      MDIChild: TMDIChildFormClass;
      OldActive: TForm;
    begin
      if ActiveMDIChild <> nil then
        OldActive := ActiveMDIChild;  if OldActive <> nil then
      try
        LockWindowUpdate(Handle);
        MDIChild := TMDIChildFormClass.Create(Self);    ShowWindow(MDIChild.Handle, SW_SHOWNOACTIVATE);
        OldActive.Show;
        Application.ProcessMessages;
      finally
        LockWindowUpdate(0);
      end
      else TMDIChildFormClass.Create(Self).Show;
    end;
      

  3.   

    Application.ProcessMessage;一句应该可以去掉,不过不知道
      

  4.   

    终于调试成功,谢谢dbExpress另,调试结果不能加这句ShowWindow(MDIChild.Handle, SW_SHOWNOACTIVATE);
    执行了这句之后如果原来窗口是最大化的,马上就会变成普通的小个窗口了,不知道是为什么
      

  5.   

    ShowWindow(MDIChild.Handle, SW_SHOW);
      

  6.   

    随便再问一个问题,如何才能不让主窗口标题合并子窗口的caption?现在的情况是每次切换一个子窗口,主窗口的标题马上就自动加上了子窗口的,显得很难看,如何屏蔽这种情况?谢~