type TFormClass = class of TForm;
function CreateForm(FormClass: TFormClass;  const FormName: string): TForm;
begin
  Result := FormClass.Create(MainForm);
  with Result do
  begin
    Parent := MainForm;
    Name := FormName;
    ShowModal;
  end;
end;

解决方案 »

  1.   

    //dpr
    program Project1;uses
      Forms,
      Classes,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2},
      Unit3 in 'Unit3.pas' {Form3};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      RegisterClasses([TForm1, TForm2, TForm3]); //要注册
      Application.Run;
      UnRegisterClasses([TForm1, TForm2, TForm3]); //要注消
    end.//pas
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vFormClass: TFormClass;
    begin
      vFormClass := TFormClass(GetClass(Edit1.Text));
      if Assigned(vFormClass) then
        with vFormClass.Create(nil) do try
          ShowModal;
        finally
          Free;
        end;
    end;
      

  2.   

    //测试用
    Edit1.Text := 'TForm1';
    Edit1.Text := 'TForm2';
    Edit1.Text := 'TForm3';
      

  3.   

    //以前回答的帖子
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vFormClass: TFormClass;
    begin
      vFormClass := TFormClass(GetClass('TForm1')); //GetClass()返回根据名称搜索的类
      if Assigned(vFormClass) then
        with vFormClass.Create(Self) do try
          ShowModal;
        finally
          Free;
        end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      RegisterClass(TForm1); //需要注册
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      UnRegisterClass(TForm1); //注销
    end;
      

  4.   

    findclass 或者  getclass
      

  5.   


    MainForm 如何定义
    CreateForm(FormClass: TFormClass;  const FormName: string): TForm;
    中FormClass参数如何设定如:CreateForm(Tform1,form1)
      

  6.   

    TApplication的CreateForm方法:
    FormClass是一个类型参数,FormName是实例
    Application.CreateForm(TForm1, Form1)  //过程方法没有返回值
    等于
    Form1 := TForm1.Create(Application)    //构造函数有返回值
      

  7.   

    mainForm 改为application
    creatForm(Tform1,'form1');
      

  8.   

    很简单的unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, unit2, unit3;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      Form: TForm;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var i: Integer;
    begin
      i:=StrToInt(Edit1.Text);
      Case i of
      0:
        begin
          Form:=TForm2.Create(self);
        end;
      1:
        begin
          form:=TForm3.Create(self);
        end;
      end;
    end;end.