我想作一个像Delphi那种界面的程序,主窗体在屏幕上方,其它窗体在屏幕下方,其它窗体即使最大化也无法覆盖主窗体,主窗体始终在上方的问题我已经通过修改Align和AutoSize实现了,其它窗体即使最大化也无法覆盖主窗体,应该怎么做?

解决方案 »

  1.   

    你的把主窗體formstyle:=fsMDIForm.
    子窗體formstyle:=fsMDIChild
      

  2.   

    首先在主窗体上创建菜单,在菜单下面创建一个ToolBar,这样就基本能达到你的要求了.
      

  3.   

    在子窗体处理 WM_GETMINMAXINFO 事件
    小例子procedure GetMinMaxInfo(var Message: TWMGetMinMaxInfo); Message WM_GETMINMAXINFO;procedure TForm1.GetMinMaxInfo(var Message :TWMGetMinMaxInfo);
    begin
      Message.MinMaxInfo^.ptMaxSize.x := 100; // 最大宽度
      Message.MinMaxInfo^.ptMaxSize.y := 100; // 最大高度  Message.MinMaxInfo^.ptMaxPosition.x := 100;  //最大化时窗口的 x 坐标
      Message.MinMaxInfo^.ptMaxPosition.y := 100;  //最大化时窗口的 y 坐标;
    end;try and happy ^_^
      

  4.   

    在其它窗体的onresize事件中添加如下代码试试(只是例子,其它情况要随机应变了):
    procedure TForm1.FormResize(Sender: TObject);
    begin
      if self.WindowState=wswsMaximized then
      begin
        self.Top:=mainform.height;
        self.Left:=mainform.left;
      end;
    end;
      

  5.   

    补一个procedure TForm1.GetMinMaxInfo(var Message :TWMGetMinMaxInfo);
    begin
      Message.MinMaxInfo^.ptMaxSize.x := 100; // 最大宽度
      Message.MinMaxInfo^.ptMaxSize.y := 100; // 最大高度  Message.MinMaxInfo^.ptMaxPosition.x := 100;  //最大化时窗口的 x 坐标
      Message.MinMaxInfo^.ptMaxPosition.y := 100;  //最大化时窗口的 y 坐标;  inherited; // 补这个, 养成好习惯嘛
    end;