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;
function CreateForm(FormClass: TFormClass; const FormName: string): TForm;
begin
Result := FormClass.Create(MainForm);
with Result do
begin
Parent := MainForm;
Name := FormName;
ShowModal;
end;
end;
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;
Edit1.Text := 'TForm1';
Edit1.Text := 'TForm2';
Edit1.Text := 'TForm3';
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;
MainForm 如何定义
CreateForm(FormClass: TFormClass; const FormName: string): TForm;
中FormClass参数如何设定如:CreateForm(Tform1,form1)
FormClass是一个类型参数,FormName是实例
Application.CreateForm(TForm1, Form1) //过程方法没有返回值
等于
Form1 := TForm1.Create(Application) //构造函数有返回值
creatForm(Tform1,'form1');
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.