if not assigned(Aform) then
  begin
    aform:=nil;
  end;
  try
    Aform:=TFormClass(aform.ClassType).Create(nil);//这句无法执行
    aform.Caption:='';
    aform.ShowModal();
  finally
    aform.Release();
    aform:=nil;
  end;请问应该如何更改

解决方案 »

  1.   

    先用 Registerclasses() 註冊你的 AFrom 的類!再用
    aform := Tcomponentclass(GetClass(CompType)).Create(Application));有不明白的, 再看看幫助吧
      

  2.   

    Aform:=TFormClass(aform.ClassType).Create(self); //试试或application
      

  3.   

    if not assigned(Aform) then
      begin
        aform:=nil;
      end;
    -----------
    上面的一段话是废话
      

  4.   

    if not assigned(Aform) then  //条件写反了吧?
      begin
        aform:=nil;
      end;
      try
        Aform:=TFormClass(aform.ClassType).Create(nil);//这句无法执行——aform,怎么类名和变量名一样?
        aform.Caption:='';
        aform.ShowModal();
      finally
        aform.Release();
        aform:=nil;
      end;
      

  5.   

    用这种方式吧:
    procedure OpenForm1(FormClass1: TFormClass;var fm1;AOwner1:TComponent);
    begin
      if TForm(fm1)=nil then begin
         TForm(fm1):=FormClass1.Create(AOwner1);
         TForm(fm1).parent:=plMain;
         TForm(fm1).Align := alClient;
         TForm(fm1).Show;
      end;
      TForm(fm1):=nil;
    end;
      

  6.   

    to:木木这种方法我知道的,但是我想只通过一个form的指针来获得它的类类型
      

  7.   

    先用 Registerclasses() 註冊你的 AFrom 的類!
    // 在你声明AForm的单元的Initialization 里
    //initialization
    //  RegisterClass(TAForm);
    再用
    aform := Tcomponentclass(GetClass(CompType)).Create(Application));//参考: http://expert.csdn.net/Expert/topic/2580/2580087.xml?temp=.6117212