下面代码是关闭所有MDI窗口的子窗口。(代码是写在菜单中的)
我直接用一个按钮用
begin
window lwActiveSheet, lwNextSheetlwActiveSheet = PARENTWINDOW.GetActiveSheet()
lwNextSheet = PARENTWINDOW.GetNextSheet( lwActiveSheet )
DO WHILE IsValid(lwNextSheet)
CLOSE( lwNextSheet )
lwNextSheet = PARENTWINDOW.GetNextSheet( lwActiveSheet )
LOOP
CLOSE( lwActiveSheet )
end;
出错!
是怎么用呢
我不知道?

解决方案 »

  1.   

    if MainForm.MDIChildCount >0 then
      begin
        for i := 0 to MainForm.MDIChildCount -1 do
        begin
          MainForm.MDIChildren[i].Close;
        end;
      end;
      FreeAndNil(frmLogin);
      

  2.   

    每个子窗体
    procedure TMDIChild01.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := CaFree;
      MDIChild01:= nil;
    end;
      

  3.   

    function TBaseMain.CloseAllChild(AForm:TForm;Prompt:boolean=true):boolean;
    var
      i,vWinCount:integer;
    begin  result:=true;
      if vWinCount>0 then
      begin
        for i:=MDIChildCount-1 downto 0 do
            if MDIChildren[I]<>AForm then
              MDIChildren[I].Close;
      end;
    end;