我在MDI主窗体中有一个“窗口”菜单 ,要完成这样的功能,里面有几项 水平平铺/垂直平铺/重叠 
想让MDI子窗体完成 水平平铺/垂直平铺/重叠 这样的功能。
请问该怎么做?
还有,我想在每打开一个子窗体的时候,在“窗口”这个菜单中加多一项,
该项显示些窗体的名字,点击的时候可以将表示的这个窗体激活。
打开多个子窗体后,在“窗口”这个菜单中就有多项,各表示不同的窗体,
请问这样的功能如何实现呢。
请指教。谢谢!

解决方案 »

  1.   

    Application.MainForm.Tile;
    Application.MainForm.Cascade;
    Application.MainForm.ArrangeIcons;
      

  2.   

    以下是DELPHI VCL 库 实现的代码,你参考一下;procedure TWindowCascade.ExecuteTarget(Target: TObject);
    begin
      GetForm(Target).Cascade;
    end;{ TWindowTileHorizontal }procedure DoTile(Form: TForm; TileMode: TTileMode);
    const
      TileParams: array[TTileMode] of Word = (MDITILE_HORIZONTAL, MDITILE_VERTICAL);
    begin
      if (Form.FormStyle = fsMDIForm) and (Form.ClientHandle <> 0) then
        SendMessage(Form.ClientHandle, WM_MDITILE, TileParams[TileMode], 0);
    end;procedure TWindowTileHorizontal.ExecuteTarget(Target: TObject);
    begin
      DoTile(GetForm(Target), tbHorizontal);
    end;{ TWindowTileVertical }procedure TWindowTileVertical.ExecuteTarget(Target: TObject);
    begin
      DoTile(GetForm(Target), tbVertical);
    end;
      

  3.   

    主窗体上放一个Action  加入New Standard Action 选择
    TileHorizontally和TileVertically和Cascade  不用写任何代码就可完成。
      

  4.   

    水平:
      TileMode := tbHorizontal;
      tile;
    垂直:
      TileMode := tbVertical;
      tile;
    重叠:
      cascade;