我得到除了Mainfrm以外的form控制句柄。或者有什么办法能free掉除了mainfrm以外的窗体.

解决方案 »

  1.   

    如果有父,子窗口的不能FREE其它的,只能Hide其它。
      

  2.   

    var I: integer;
    begin
     for i := 0 to Application.ComponentCount - 1 do
     begin
       if (Application.Components[i] as TForm).Caption = application.MainForm.Caption then
        continue
       else
        (Application.Components[i] as TForm).Free;
     end;
    end;
      

  3.   

    如果MainFrm以外的窗体的名为Form
    则:
       Form.Close;
      

  4.   

    一般说来,应该本着谁创建谁释放的原则,如果MainForm外的Form不是动态创建的,最好不去释放它,如必须手工释放,应该使用FreeAndNil(Form)或者Form.Free; Form := nil;否则程序退出时可能出错。