要求是这样的:我知道了这个窗体的名字,FORM4我也引用了这个单元,如何的写一个addform(这传入窗体的名字),我在别的地方一调用,能显示和释放这个窗体

解决方案 »

  1.   

    传入窗体名,没办法实现吧
    可以试试传入formclass,用formclass对象来创建
      

  2.   

    在你的addForm里动态创建你的那个窗口(FORM4里定义的窗体类),然后命名即可
      

  3.   

    用GetClass('TFORM4')得到TFORM4类,然后去处理后面的事
      

  4.   

    定义一个 TForm数组,然后再动态创制不好吗
      

  5.   

     用  GetClass  根據窗口類名建立
      

  6.   

    unit Tool_G;interfaceuses Controls,Classes,Forms;//运行一个模式窗体,窗体标题默认为空
    function RunShowModal(AForm:TForm;AFormClass: TFormClass;Caption:String='';IsMax:boolean=False):Boolean;//运行一个无模式窗体,窗体标题默认为空
    function RunShow(AForm:TForm;AFormClass: TFormClass;Caption:String='';IsMax:boolean=False):Boolean;implementation//运行一个模式窗体,窗体标题默认为空
    function RunShowModal(AForm:TForm;AFormClass: TFormClass;Caption:String='';IsMax:boolean=False):Boolean;
    begin
      result:=False;
      if not Assigned(AForm) then
      begin
        try
          begin
            Screen.Cursor:=crHourGlass;
            AForm:=AFormClass.Create(Application);
            if Caption<>'' then
              AForm.Caption:=Caption;
            if IsMax then
            begin
              AForm.Align:=alClient;
              AForm.WindowState:=wsMaximized;
            end;
            Screen.Cursor:=crDefault;
            AForm.ShowModal;
            result:=True;
          end;
        finally
        begin
          AForm.Free;
          Screen.Cursor:=crDefault;
        end;  
        end;
      end
      else begin
        try
          AForm.ShowModal;
          result:=true;
        except
        end;
      end;
    end;//运行一个无模式窗体,窗体标题默认为空
    function RunShow(AForm:TForm;AFormClass: TFormClass;Caption:String='';IsMax:boolean=False):Boolean;
    begin
      result:=False;
      Application.ProcessMessages;
      if not Assigned(AForm) then
      begin
        try
          begin
            AForm:=AFormClass.Create(Application);
            if Caption<>'' then
              AForm.Caption:=Caption;
            if IsMax then
            begin
              AForm.Align:=alClient;
              AForm.WindowState:=wsMaximized;
            end;
            AForm.Show;
            result:=True;
          end;
        finally
        end;
      end
      else begin
        try
          AForm.Show;
          result:=true;
        except
        end;
      end;
    end;
    end.